ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Работа с бинарным файлом
  #1  
Старый 24.02.2008, 17:17
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию Работа с бинарным файлом

Есть бинарный файл на треть состоящий из обычных текстовых символов.Естественно что такие ф-ции как strstr strtok и им подобные использовать неудается.Как можно из этого файла "выпотрошить" текст который там содержится?
 
Ответить с цитированием

  #2  
Старый 24.02.2008, 17:54
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

чет я вопроса не понял...
Какая разница какие там символы печатные или нет, ты работаеш с их кодом, поэтому все строковые функции работают. открывай через rb и работай
 
Ответить с цитированием

  #3  
Старый 24.02.2008, 18:08
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от nc.STRIEM  
чет я вопроса не понял...
Какая разница какие там символы печатные или нет, ты работаеш с их кодом, поэтому все строковые функции работают. открывай через rb и работай
Я уже так пытался.Вообщем я имею в виду этот файл Х:\Documents and Settings\user\Application Data\ICQ\номераськи\номераськи .FB
Если его открывать через fopen(с параметром чтения rb ) и читать fread ,то ниче кроме "AOL Feedbag 1.1" все ф-ции для работы с текстом невидят
ЗЫ:файл от оф. асику клиента 6й версии
 
Ответить с цитированием

  #4  
Старый 24.02.2008, 18:18
zythar
Moderator - Level 7
Регистрация: 16.02.2008
Сообщений: 580
Провел на форуме:
1595333

Репутация: 291


Отправить сообщение для zythar с помощью ICQ
По умолчанию

хз получится или нет потому что код юниховы.

Код:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    int d,sz;
    char buffer[1024];
    d=open("путь_к_файлу", O_RDRW);
    while ((sz=read(d, buffer, 1024))>0) {
        /*твои действия*/
    };
    return 0;
}
а вообще прально. нет разницы какой тип файла когда его открываешь, так что в принципе все должно работать

Последний раз редактировалось zythar; 24.02.2008 в 18:21..
 
Ответить с цитированием

  #5  
Старый 24.02.2008, 18:20
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

покажи код.

Вот те для примера прога для конвертации бинарных файлов
Код:
#include <stdio.h>
#include <IO.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  if(argc < 2)
            return printf("USE: %s file_path\n", argv[0]);
  FILE *fr, *fw;
  fr=fopen(argv[1], "rb");
  fw=fopen("result.txt", "wb");
  if(!fr || !fw)
         return printf("Open file error\n");
  int size=filelength(fileno(fr));
  unsigned char c;
  while(size > 0)
  {
             c=fgetc(fr);
             printf("\\0x%X", c);
             fprintf(fw, "\\0x%X", c);
             size--;
  }
  fclose(fw);
  fclose(fr);
  system("result.txt");
  remove("result.txt");
  return 0;
}

Последний раз редактировалось nc.STRIEM; 24.02.2008 в 18:22..
 
Ответить с цитированием

  #6  
Старый 24.02.2008, 18:54
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от nc.STRIEM  
покажи код.

Вот те для примера прога для конвертации бинарных файлов
Код:
#include <stdio.h>
#include <IO.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  if(argc < 2)
            return printf("USE: %s file_path\n", argv[0]);
  FILE *fr, *fw;
  fr=fopen(argv[1], "rb");
  fw=fopen("result.txt", "wb");
  if(!fr || !fw)
         return printf("Open file error\n");
  int size=filelength(fileno(fr));
  unsigned char c;
  while(size > 0)
  {
             c=fgetc(fr);
             printf("\\0x%X", c);
             fprintf(fw, "\\0x%X", c);
             size--;
  }
  fclose(fw);
  fclose(fr);
  system("result.txt");
  remove("result.txt");
  return 0;
}
Пример какай то странный .Я его вот так изменил
Код:
main()
{
char a[256];
ExpandEnvironmentStrings("%HOMEPATH%",a,256);
strcat(a,"\\Application Data\\ICQ\\208190791\\208190791.FB");
FILE *fr, *fw;
fr=fopen(a, "rb");
fw=fopen("result.txt", "wb");
int size=filelength(fileno(fr));
unsigned char c;
while(size > 0)
{
c=fgetc(fr);
printf("\\0x%X", c);
fprintf(fw, "\\0x%X", c);
size--;
}
fclose(fw);
fclose(fr);
system("result.txt");
remove("result.txt");
return 0;
}
В и тоге он мне в stdout выдает бесконечный поток \0xFF

А вот и мой код
Код:
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
int stf(char *buf=new char[1024*10])
{
int sz,n,stop;
char a[256];
DWORD szf,rb;
char *buf2=new char[1024*10];
ExpandEnvironmentStrings("%HOMEPATH%",a,256);
strcat(a,"\\Application Data\\ICQ\\208190791\\208190791.FB");
HANDLE h=CreateFile(a,GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
szf=GetFileSize(h,0);
stop=0;
ReadFile(h,buf2,szf,&rb,NULL);
for(;;)
{
if(strlen(buf2)>0)
{
strcat(buf,buf2);
buf2+=strlen(buf2);
}
if(strlen(buf2)==0)
{
buf2+=1;
stop++;
}
if((strlen(buf))+stop==szf)
{
break;
}
}
CloseHandle(h);
return(szf);
}
main()
{
char *a=new char[1024*10];
cout<<stf(a)<<"\n";
printf(a);
getch();
}
Но он кроме текста выводит ещё кучу левого мусора Может у кого есть идеи как от него исбавится?

Последний раз редактировалось _nic; 24.02.2008 в 19:48..
 
Ответить с цитированием

  #7  
Старый 26.02.2008, 22:35
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

не туда копаешь!
разберись что есть МУСОР!!!!
если мусор это корябушки КОИ-8 отображающиеся в 1251, или наоборот.... или DOS кодировка,
то с твоим определением мусора можно не согласится!
Ты запросто мог отфильтровать свой ВЫВОД по коду символа обратившись к таблице
Пуск->Программы->Стандартные->cлужебные->Таблица символов
....
в том то и дело что ты ищешь универсальной перекодировки .... которой не существует, по той причине , что только у символов английского языка "зарезервировано место" а у остальных языков "птичьи права"

Последний раз редактировалось Delimiter; 27.02.2008 в 01:05..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с современными SIM-картами с алгоритмом шифрования Comp v2 и 3 novichok Сотовый фрикинг 23 16.01.2009 18:16
Хорошая работа! За хорошие деньги! Главное постоянная) sonywalkman О Работе 2 27.01.2008 01:20
Работа на дому xmensuperman О Работе 5 11.01.2008 20:15



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ