imho.ws |
![]() |
![]() |
![]() |
# 1 |
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
Скрипт "отсигнирования" .jar файлов
Вот така задача: Тмеется много просигнированных ява-архивов.
Если кто не в курсе это по идее простые зипы (Zip) но c окончанием .jar Исходим из того, что в нутри каждого есть кталог "META-INF". В нём имется файл Manifest.fm. Так вот чтобы убрать сигнатуру такого jar-фала то по идее достаточно стереть нижнию часть содержимого файла manifest.fm оставив верхнюю (начиная с кажем с первой пропущеной строки и до кноца). Для чисчтоты ещё не плохо бы в каждом jare стереть всё содержимое каталога META-INF кроме MANIFEST.FM. Идея такая: скрипт котрый бежит по всем файлам с окончанием ".jar" (пусть они будут в текущем каталоге..) и делает над ними вышеописанные операции... Вот пробежаться по файлам я ещё могу... А вот что бы выполнить вышеуказанные операции нужна ваша ПОМОЩЬ! Пожалуйста помогите соотвествующим скриптом в идеале под виндовс... но можно и под линукс или в antе... Заранее благодарен!!! ![]() ![]() |
![]() |
![]() |
# 2 |
Administrator
Регистрация: 13.05.2002
Сообщения: 11 227
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
(jar == zip) = true
__________________
Осколки прошлого, как снег, закрутит ураган времён, В ушедший день для нас навек, обрушив мост, Оставив в наших душах след, тьма уплывёт за горизонт, И в чистом небе вспыхнет свет, свет новых звёзд. |
![]() |
![]() |
# 4 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А это вообще зачем? Точно цели легальные?
Под винду-то я вряд ли смогу помочь, но накидать в Линуксе могу скрипт. Только вот меня гложат сомнения по "честности" удаления подписи, ведь не зря подписывали его?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 5 | |
Full Member
Регистрация: 16.09.2003
Сообщения: 793
![]() ![]() ![]() ![]() ![]() |
Цитата:
короче глюки страшные идут.. для одного джара я попробовал если стираешь и сигинруешь новым сертификатом не глючным.. то всё пашет.. проблема в том что библиотьек много.. ну версий там куча вернее.. Короче это же не сложно.. я надеялся на скорую помошь тут... Но вивдимо придётся в даваться в дебри виндовсскриптинга.. ![]() ![]() добавлено через 1 минуту Было бы супер!!! ![]() |
|
![]() |
![]() |
# 6 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Пожалуйста.
Извини что так долго, совсем не до этого было... Комментарии с настройками в коде. Думаю что там все понятно. Тестировалось небрежно, на 5 файлах, но работало нормально. Для работы требуется zip, unzip, awk. Еслим что будет не понятно - с радостью отвечу. Код:
#!/bin/bash #CaseSensitive! EXT=jar #Расширение, с которым оставлять оригинал. Если оставить пустое, то файлы будут перезаписываться. BAK_EXT=bak TMP_DIR=wirking_dir.tmp FULL_LOG=LOG.LOG #Uncomment this line, if log not needed #FULL_LOG=/dev/null echo Starting at `date` > $FULL_LOG if [ ! "$1" ]; then echo 'Необходимо передать директорию для обработки первым параметром!' exit 1 fi DIR=$1 if [ ! -d $TMP_DIR ]; then mkdir $TMP_DIR fi for File in $DIR/*.$EXT do echo ====================================== echo Обрабатывается $File | tee -a $FULL_LOG ( unzip -x $File -d $TMP_DIR 2>&1) >>$FULL_LOG #"Для чисчтоты ещё не плохо бы в каждом jare стереть всё содержимое каталога META-INF кроме MANIFEST.FM." #Do it ls -1 $TMP_DIR/META-INF | grep -v 'MANIFEST.MF' | xargs -r rm >> $FULL_LOG 2>>$FULL_LOG #"Так вот чтобы убрать сигнатуру такого jar-фала то по идее достаточно стереть нижнию часть содержимого файла manifest.fm оставив верхнюю (начиная с кажем с первой пропущеной строки и до кноца)." #Do it awk 'BEGIN {RS="\r?\n\r?\n.+"} { print $0}' $TMP_DIR/META-INF/MANIFEST.MF > $TMP_DIR/META-INF/MANIFEST.MF.tmp mv $TMP_DIR/META-INF/MANIFEST.MF.tmp $TMP_DIR/META-INF/MANIFEST.MF #Пакуем обратно if [ "$BAK_EXT" ]; then mv $File $File.$BAK_EXT else rm $File fi CUR_PWD=`pwd` cd $TMP_DIR ( zip -9r `basename $File` ./* 2>&1 ) >>$FULL_LOG # >> $FULL_LOG 2>>$FULL_LOG cd $CUR_PWD mv $TMP_DIR/`basename $File` $File echo -e "\tDONE" | tee -a $FULL_LOG rm -rf $TMP_DIR/* done rmdir $TMP_DIR
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |