прога Router Scan

Discussion in 'Беспроводные технологии/Wi-Fi/Wardriving' started by СЕРЖ32, 11 Nov 2013.

  1. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Всё постить сюда.
    Да, но RCE тоже можно, если оно эксплуатируется через HTTP, и с помощью него можно добиться таких эффектов:
    Это не роутер, так что добавлять не стоит.
    Нет, рано ещё, мало изменений.
     
    Payer and sha9 like this.
  2. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    А в каком виде передаются данные в SetTableDataW(Row: DWord; Name, Value: PChar); ... я почему то не могу сохранить Name и Value типа Pchar в любую переменную, перепробовал разные типы... но почему то выводится только в визуальные компоненты... Причем, если потом скопировать из визуального компонента в переменную, тоже Access Violation.. не сталкивался ещё с таким.
     
  3. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Это указатели на null-terminated строки, ANSI либо Unicode в зависимости от постфикса A/W.

    Покажите, как вы объявили callback-функцию, и как производите чтение из переменных, и я скажу, в чём ошибка.
     
    Stine and sha9 like this.
  4. sha9

    sha9 Well-Known Member

    Joined:
    25 Sep 2015
    Messages:
    568
    Likes Received:
    735
    Reputations:
    2
    пароль еще не пофиксили. ;):D:D
     
    Ossen and Kolhozan like this.
  5. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    Пол ночи просидел с этой проблемой ). Ниже функция которой пытаюсь получить результат. Инициализация как в примере.


    function routerscan(row:dword; ipaddr:string; port:dword):string;
    type TIPv4 = record case Boolean of
    False: (dw: LongWord);
    True: (b: Array[0..3] of Byte);

    end;
    var
    s:string;
    IP: TIPv4;
    info:tstringlist;
    hRouter: THandle;

    procedure SetTableDataW(Row: DWord; Name, Value: PChar); stdcall;
    begin

    if Row <> 123 then
    Exit;
    form1.memo1.Lines.Add(Name+ ': '+ Value);
    if Name='Auth' then result:= PChar(Value) ; // В memo1 выводится, в любую переменную не получается...

    end;

    begin

    info:=tstringlist.Create;
    info.Delimiter:='.';
    info.DelimitedText:=ipaddr;


    ip.b[3]:=strtoint(info[0]);
    ip.b[2]:=strtoint(info[1]);
    ip.b[1]:=strtoint(info[2]);
    ip.b[0]:=strtoint(info[3]);
    info.Free;

    if not SetParam(stSetTableDataCallback, @SetTableDataW) then begin
    form1. memo1.Lines.Add('Failed to set callback procedure');
    Exit;
    end;

    if not PrepareRouter(row, IP.dw, Port, hRouter) then begin
    form1.memo1.Lines.Add('PrepareRouter failed');
    Exit;
    end;
    form1.memo1.Lines.Add('Scanning router...');
    if not ScanRouter(hRouter) then begin
    form1.memo1.Lines.Add('ScanRouter failed');
    Exit;
    end;
    if not FreeRouter(hRouter) then begin
    form1.memo1.Lines.Add('FreeRouter failed');
    Exit;
    end;

    end;
     
  6. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Нельзя использовать вложенную функцию в качестве callback функции, поскольку при её вызове из librouter у неё не будет привязки к родительской функции, и к её локальным переменным соответственно.

    Обращение к любым локальным переменным вызовет порчу памяти и структур. Можно использовать глобальные переменные:

    PHP:
    var
      
    Form1TForm1;
      
    ResString// глобальная переменная

    implementation

    {$R *.dfm}

    function 
    routerscan(rowdwordipaddrstringportdword): string;
    type
      TIPv4 
    record
        
    case Boolean of
          False
    :
            (
    dwLongWord);
          
    True:
            (
    b: Array [.. 3of Byte);

      
    end;
    var
      
    IPTIPv4;
      
    infotstringlist;
      
    hRouterTHandle;

      
    procedure SetTableDataW(rowdwordNameValuePChar); stdcall;
      
    begin
        
    if row <> 123 then
          
    Exit;
        
    form1.memo1.Lines.Add(Name ': ' Value);
        if 
    Name 'Auth' then
         Res 
    := Value// записываем результат
      
    end;

    begin
      Result 
    := '';

      
    info := tstringlist.Create;
      
    info.Delimiter := '.';
      
    info.DelimitedText := ipaddr;

      
    IP.b[3] := strtoint(info[0]);
      
    IP.b[2] := strtoint(info[1]);
      
    IP.b[1] := strtoint(info[2]);
      
    IP.b[0] := strtoint(info[3]);
      
    info.Free;

      if 
    not SetParam(stSetTableDataCallback, @SetTableDataWthen
      begin
        form1
    .memo1.Lines.Add('Failed to set callback procedure');
        Exit;
      
    end;

      if 
    not PrepareRouter(rowIP.dwporthRouterthen
      begin
        form1
    .memo1.Lines.Add('PrepareRouter failed');
        Exit;
      
    end;
      
    form1.memo1.Lines.Add('Scanning router...');
      if 
    not ScanRouter(hRouterthen
      begin
        form1
    .memo1.Lines.Add('ScanRouter failed');
        Exit;
      
    end;
      
    Result := Res// считываем результат
      
    if not FreeRouter(hRouterthen
      begin
        form1
    .memo1.Lines.Add('FreeRouter failed');
        Exit;
      
    end;

    end;

     
    Stine and sha9 like this.
  7. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    Хм, это ж функция потока... тогда придется создавать массив res, для каждого потока свой... Я так понимаю и в функции PrepareRouter(row, IP.dw, port, hRouter), row должно быть уникальное для каждого потока... И проверять в функции SetTableDataW, что ответ пришел именно этому потоку... row всех остальных потоков игнорировать...
    Ограничений на количество потоков в библиотеке нет?
     
    sha9 likes this.
  8. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Да, абсолютно верно.
    Ограничивается объёмом INT.
     
    sha9 likes this.
  9. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    Теперь проблема что в этой функции вообще не работают никакие локальные переменные, только глобальные, а как мне объявить внутри этой функции номер потока? Номер потока в любом случае локально внутри потока...
    Пытался так объявлять, не работает...

    tnew = class(tthread)
    public
    st:dword; //тут храню номер потока
    protected
    procedure execute; override;
    end;

    procedure SetTableDataW(Row: DWord; Name, Value: pchar); stdcall;
    begin
    if Row <> st then
    Exit;
    if Name='Auth' then res[st]:= Value ;
    end;

    Глобальные переменные работают, но как мне в них держать номера потоков?
     
  10. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Можно же просто сделать глобальный массив строк:

    Rows: Array[0..999] of String; // 1000 строк

    И таким образом получать нужные строки по нужному уникальному индексу. Сами активные (используемые) индексы хранить где-то ещё.
     
    sha9 likes this.
  11. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    В них и проблема , в индексе, для результатов уже сделал глобальный массив res , вопрос как функции указать индекс потока...

    res: array [1..2000] of string; // тут храню результаты... глобальная переменная... вопрос как указать функции индекс потока.... его номер... его нельзя глобально хранить... Переменная st , мне ж нужно указать функции какой Row этого потока, и индекс массива для сохранения результатов...

    procedure SetTableDataW(Row: DWord; Name, Value: pchar); stdcall;
    begin
    if Row <> st then
    Exit;
    if Name='Auth' then res[st]:= Value ;
    end;

    Чем заменить st переменную?
     
  12. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Вы должны были прийти к пониманию, для чего нужна первая проверка условия в демо приложении...
    PHP:
    procedure SetTableDataW(RowDWordNameValuepchar); stdcall;
    begin
      
    if Name 'Auth' then
        res
    [Row] := Value;
    end;
     
    Stine likes this.
  13. Stine

    Stine New Member

    Joined:
    24 Nov 2012
    Messages:
    41
    Likes Received:
    4
    Reputations:
    0
    Меня строка if Row <> 123 в демке запутала )...
    Все работает, на сотнях поков без глюков ... спасибо за консультацию...:)
     
    sha9 likes this.
  14. VViktor

    VViktor Banned

    Joined:
    3 Jun 2017
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    China версия Router Scan со всевозможными пряниками давно уже есть, гуглите)
     
  15. Vltv

    Vltv New Member

    Joined:
    5 Nov 2015
    Messages:
    27
    Likes Received:
    2
    Reputations:
    0
    Доброе время суток! Вопрос может немного не по теме, но пока задам здесь. В базе 3Wifi появилась точка с МАК C8:BE:19:7A:50:04 и ESSID DSL_2640NRU. Нельзя ли подсказать пользователя и пароль на сам роутер, простые стандартные - не подходят, пытаюсь сбрутить через telnet -пока безрезультатно. Ещё раз извиняюсь если не по теме.
     
  16. Triton_Mgn

    Triton_Mgn Elder - Старейшина

    Joined:
    6 Jul 2015
    Messages:
    3,659
    Likes Received:
    5,793
    Reputations:
    51
    Пароли на морду роутера не выдаются, в мануале RS описано - почему, по 3wifi есть отдельная тема.
     
    sha9 likes this.
  17. Kakoluk

    Kakoluk Banned

    Joined:
    14 Aug 2015
    Messages:
    514
    Likes Received:
    704
    Reputations:
    4
    Чёрт возми, отец родной, дайте страждущим "ночную сборку" уже! :)
    Лично у меня, уже лежат отфильтрованные диапазоны для скана(спортивный интерес).
    Ну таки хочется слегка отличится.(если конечно вы уже всё не посканили). :D
     
    Ossen and sha9 like this.
  18. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    Так они вроде и так парсятся. Use credentials superadmin:r007F&&RTCpw

    [​IMG]
     
    sha9, Payer and CRACK211 like this.
  19. Kakoluk

    Kakoluk Banned

    Joined:
    14 Aug 2015
    Messages:
    514
    Likes Received:
    704
    Reputations:
    4
    А вот можно их добавить в первую проверку пары в експлойт по слепку отклика? Ну так, из лени и для автоматизации. Use credentials для особых случаев, что то вроде последнего редута. :)
     
    sha9 likes this.
  20. Felis-Sapiens

    Felis-Sapiens Reservists Of Antichat

    Joined:
    21 Jul 2015
    Messages:
    616
    Likes Received:
    3,833
    Reputations:
    171
    Уже сделано.
     
    hydra, Mednik, sha9 and 4 others like this.