Extension spoofing C++, problema multibyte

Iniciado por Kaxperday, 20 Diciembre 2015, 11:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Kaxperday

Código (cpp) [Seleccionar]

wchar_t t = 0x202E;
wstring w;
w += 0x202E;
wstring b = L"C:\\Users\\Usuario\\Desktop\\prueba" + w + L".exe";
_wfopen(b.c_str() , L"wt");


Inserto el carácter multibyte de "puntero de derecha a izquierda", para hacer el spoofing sin éxito, trabjo con wchar_t (16 bits), la cadena antes de llamar a wfopen() se muestra como:

"C:\Users\Usuario\Desktop\prueba"

¿qué pasa?, un saludo.
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Kaxperday

#2
Esto ya es otra cosa:

Código (cpp) [Seleccionar]

wchar_t t = 0x202E;
wstring w;
w += 0x202E;
wstring b = L"C:\\Users\\Usuario\\Desktop\\prueba" + w + L"fdp.exe";
wcout << b; system("pause");
_wfopen(b.c_str() , L"wt");


Si que funciona, pero aún así ¿no sabrás alguna otra manera de hacerlo sin que aparezca el "exe" en el nombre? (supongo que no habrá que usar el carácter derecha a izquierda claro).

Saludos y gracias por la respuesta socio.

Edito: Mejor así:

Código (cpp) [Seleccionar]

bool extension_spoofing(wstring _direccion, wstring _extension){
if (_direccion.find(L".exe") != wstring::npos){
wstring temporal = _direccion;
temporal = wstring(temporal.rbegin(), _extension.rend());
temporal.erase(temporal.find(L".exe"), _extension.length());
temporal += (wchar_t)0x202E + _extension + L".exe";
return !_wrename(_direccion.c_str(), temporal.c_str());
}
return false;
}


Código (cpp) [Seleccionar]

bool extension_spoofing(wstring _direccion, wstring _extension){
if (_direccion.find_last_of('.') != wstring::npos){
wstring direccion = _direccion;
wstring extension = direccion.substr(direccion.find_last_of('.') + 1, direccion.length());
direccion.erase(direccion.find_last_of('.'), extension.length() + 1);
direccion += (wchar_t)0x202E + wstring(_extension.rbegin(), _extension.rend()) + L"." + extension;
return !_wrename(_direccion.c_str(), direccion.c_str());
}
return false;
}


Este último a veces falla y cambia de extensión a cualquier tipo de archivo, pero bueno no le voy a dar más vueltas, solo quería ver que se podía hacer y funciona muy bien, lo único que tiene "exe" en el nombre, pero es lo de menos. Un saludo!!.

Enjoy, ¡saludos!
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.