| 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. |
|
|