IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Руководство для новичков (http://www.imho.ws/forumdisplay.php?f=35)
-   -   Скрипт "отсигнирования" .jar файлов (http://www.imho.ws/showthread.php?t=120033)

shuron 07.06.2007 00:43

Скрипт "отсигнирования" .jar файлов
 
Вот така задача: Тмеется много просигнированных ява-архивов.
Если кто не в курсе это по идее простые зипы (Zip) но c окончанием .jar

Исходим из того, что в нутри каждого есть кталог "META-INF".
В нём имется файл Manifest.fm. Так вот чтобы убрать сигнатуру такого jar-фала то по идее достаточно стереть нижнию часть содержимого файла manifest.fm оставив верхнюю (начиная с кажем с первой пропущеной строки и до кноца).

Для чисчтоты ещё не плохо бы в каждом jare стереть всё содержимое каталога META-INF кроме MANIFEST.FM.

Идея такая: скрипт котрый бежит по всем файлам с окончанием ".jar" (пусть они будут в текущем каталоге..) и делает над ними вышеописанные операции...

Вот пробежаться по файлам я ещё могу... А вот что бы выполнить вышеуказанные операции нужна ваша ПОМОЩЬ!

Пожалуйста помогите соотвествующим скриптом в идеале под виндовс...
но можно и под линукс или в antе...

Заранее благодарен!!!:молись::beer:

helldomain 08.06.2007 13:26

(jar == zip) = true

shuron 08.06.2007 23:30

Цитата:

Сообщение от helldomain (Сообщение 1420315)
(jar == zip) = true

Да это же я знаяю, яж написал об этом..
ты лучше дай КОД на Виндовскрипте котрый распаковывыет, лезт в Файл и стирает не нужное! ;)

Hubbitus 09.06.2007 11:42

А это вообще зачем? Точно цели легальные?
Под винду-то я вряд ли смогу помочь, но накидать в Линуксе могу скрипт. Только вот меня гложат сомнения по "честности" удаления подписи, ведь не зря подписывали его?

shuron 10.06.2007 00:37

Цитата:

Сообщение от Hubbitus (Сообщение 1420727)
А это вообще зачем? Точно цели легальные?
Под винду-то я вряд ли смогу помочь, но накидать в Линуксе могу скрипт. Только вот меня гложат сомнения по "честности" удаления подписи, ведь не зря подписывали его?

Заверю тебя что всё легально.. Просигировали глючным сертификатом кучу библиотек (собственных и опен сорс) с ним нихрена не работает... Причём его так глючнуло что при пресегнированию дургим он не стирается... тоесть как бы два в файле содержутся...
короче глюки страшные идут..

для одного джара я попробовал если стираешь и сигинруешь новым сертификатом не глючным.. то всё пашет.. проблема в том что библиотьек много.. ну версий там куча вернее..

Короче это же не сложно.. я надеялся на скорую помошь тут...
Но вивдимо придётся в даваться в дебри виндовсскриптинга.. :( с неизвестным исходом полезности... :(

добавлено через 1 минуту
Цитата:

Сообщение от Hubbitus (Сообщение 1420727)
но накидать в Линуксе могу скрипт. Только вот меня гложат сомнения п

Было бы супер!!!:yees:

Hubbitus 18.06.2007 22:19

Цитата:

Сообщение от shuron (Сообщение 1420961)
Было бы супер!!!

Пожалуйста.
Извини что так долго, совсем не до этого было...

Комментарии с настройками в коде. Думаю что там все понятно. Тестировалось небрежно, на 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

P.S. Очень все-таки надеюсь что правда относительно честных намерений, а не чьи-то копирайты у ворованного контента снимаете.

shuron 02.08.2007 00:07

Отлично работает как надо! манифест чистит. правда там ещё файлы надо, потиреть но это я может допишу сам.

И не сомневайся в назначении как я уже писал выше ;)


Часовой пояс GMT +4, время: 08:39.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.