-
Notifications
You must be signed in to change notification settings - Fork 63
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
wx1183618058
committed
Dec 24, 2017
1 parent
8405661
commit a19b28d
Showing
107 changed files
with
48,481 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# 华为光猫系列配置解密工具 | ||
|
||
|
||
![huawei](https://raw.githubusercontent.com/wx1183618058/HuaWei-Optical-Network-Terminal-Decoder/master/src.png) | ||
|
||
**本软件**是一款专为解密华为光猫配置的工具,使用QT开发。 | ||
- **具体功能** :如图基本所有加解密都支持。 | ||
- 用 Qt creator 打开编译即可, 在hua.pro中设置好依赖 zlib | ||
|
||
> $ cd huawei_optical_network_terminal_decoder | ||
> | ||
> $ qmake | ||
> | ||
> $ ./huawei |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
TEMPLATE = subdirs | ||
|
||
SUBDIRS += \ | ||
huawei \ | ||
xyssl \ | ||
quazip | ||
|
||
huawei.depends = quazip xyssl | ||
#YOU PATH ZLIB | ||
ZLIB += YOU PATH ZLIB |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#ifndef AESCRYPT_H | ||
#define AESCRYPT_H | ||
|
||
#include <stdint.h> | ||
#include <QString> | ||
|
||
class AesCrypt | ||
{ | ||
public: | ||
enum AesCryptMode { | ||
$1 = 1, | ||
$2 = 2, | ||
SU = 3 | ||
}; | ||
AesCrypt(const QString &text, const AesCryptMode &mode); | ||
int check_format(); | ||
QString decrypt(); | ||
QString text() const; | ||
void setText(const QString &text); | ||
AesCryptMode mode() const; | ||
void setMode(const AesCryptMode &mode); | ||
|
||
private: | ||
QString text_; | ||
AesCryptMode mode_; | ||
QString decrypt_$1(); | ||
QString decrypt_$2(); | ||
QString decrypt_SU(); | ||
int encode_to_char(QString &encode); | ||
uint8_t aes_rotl(uint8_t ch, int c); | ||
void aes_ascii_unvisible(uint8_t *str, size_t str_len); | ||
void aes_generate_rand_pwd_key(const uint8_t *str, uint8_t *aes_key); | ||
uint32_t aes_enh_sys_to_long(const uint8_t *plain); | ||
void aes_plain_to_bin(const uint8_t * plain, uint8_t * bin); | ||
void wbox_decrypt(uint8_t *encryption_key, uint8_t *out); | ||
void aes_get_cbc_key(char *key, int len, char *key_out); | ||
|
||
}; | ||
|
||
#endif // AESCRYPT_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
#include "cfgfile.h" | ||
#include <QFile> | ||
#include <QTime> | ||
#include <QTemporaryFile> | ||
|
||
int CfgFile::decrypt(const QString &out_file) | ||
{ | ||
QFile fin(in_file_); | ||
QTemporaryFile ftemp; | ||
if (!fin.open(QFile::ReadOnly)) return 0; | ||
if (!ftemp.open()) { | ||
fin.close(); | ||
return 0; | ||
} | ||
fin.read(32); | ||
ftemp.write(fin.readAll()); | ||
fin.close(); | ||
ftemp.close(); | ||
extract_gz(ftemp.fileName(), ftemp.fileName()); | ||
XmlFile::setIn_file(ftemp.fileName()); | ||
XmlFile::decrypt(out_file); | ||
return 1; | ||
} | ||
|
||
int CfgFile::encrypt(const QString &out_file) | ||
{ | ||
uint8_t buffer[32]; | ||
QFile fout(out_file); | ||
QTemporaryFile ftemp; | ||
if (!fout.open(QFile::WriteOnly)) return 0; | ||
if (!ftemp.open()) { | ||
fout.close(); | ||
QFile::remove(out_file); | ||
return 0; | ||
} | ||
XmlFile::encrypt(ftemp.fileName()); | ||
compress_gz(ftemp.fileName(), ftemp.fileName()); | ||
|
||
//head | ||
memset(buffer, 0, 32); | ||
memcpy(buffer, "gfcq", 4); | ||
uint32_t crc = get_crc(ftemp.fileName(), 0); | ||
memcpy(buffer+4, (uint8_t*)&crc, 4); | ||
size_t size = ftemp.size(); | ||
memcpy(buffer+8, (uint8_t*)&size, 4); | ||
int time = QTime(0, 0).secsTo(QTime::currentTime()); | ||
memcpy(buffer+12, (uint8_t*)&time, 4); | ||
|
||
fout.write((char*)buffer, 32); | ||
fout.write(ftemp.readAll()); | ||
fout.close(); | ||
ftemp.close(); | ||
return 1; | ||
} | ||
|
||
int CfgFile::is_cfg() | ||
{ | ||
char buffer[5]; | ||
buffer[4] = '\0'; | ||
QFile fin(in_file_); | ||
if (!fin.open(QFile::ReadOnly)) return 0; | ||
|
||
fin.read(buffer, 4); | ||
if (strcmp(buffer, "gfcq")) return 0; | ||
|
||
//head 32 | ||
fin.read(buffer, 4); | ||
if (*((uint32_t*)buffer) != get_crc(in_file_, 32)) return 0; | ||
|
||
fin.read(buffer, 4); | ||
if (*((int*)buffer) != fin.size()-32) return 0; | ||
|
||
fin.close(); | ||
return 1; | ||
} | ||
|
||
void CfgFile::rename(const QString &newname) | ||
{ | ||
in_file_ = newname; | ||
XmlFile::rename(newname); | ||
} | ||
|
||
uint32_t CfgFile::get_crc(const QString &in_file, int offset) | ||
{ | ||
uint32_t crc_table[384] = { | ||
0, 0x77073096, 0xEE0E612C, 0x990951BA, 0x76DC419, 0x706AF48F, | ||
0xE963A535, 0x9E6495A3, 0xEDB8832, 0x79DCB8A4, 0xE0D5E91E, | ||
0x97D2D988, 0x9B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, | ||
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, | ||
0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, | ||
0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, | ||
0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, | ||
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, | ||
0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, | ||
0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, | ||
0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, | ||
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, | ||
0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x1DB7106, | ||
0x98D220BC, 0xEFD5102A, 0x71B18589, 0x6B6B51F, 0x9FBFE4A5, | ||
0xE8B8D433, 0x7807C9A2, 0xF00F934, 0x9609A88E, 0xE10E9818, | ||
0x7F6A0DBB, 0x86D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, | ||
0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, | ||
0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, | ||
0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, | ||
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, | ||
0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, | ||
0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, | ||
0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, | ||
0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, | ||
0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, | ||
0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x3B6E20C , | ||
0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x4DB2615 , 0x73DC1683, | ||
0xE3630B12, 0x94643B84, 0xD6D6A3E , 0x7A6A5AA8, 0xE40ECF0B, | ||
0x9309FF9D, 0xA00AE27 , 0x7D079EB1, 0xF00F9344, 0x8708A3D2, | ||
0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, | ||
0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, | ||
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, | ||
0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, | ||
0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, | ||
0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, | ||
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, | ||
0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, | ||
0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, | ||
0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x26D930A , | ||
0x9C0906A9, 0xEB0E363F, 0x72076785, 0x5005713 , 0x95BF4A82, | ||
0xE2B87A14, 0x7BB12BAE, 0xCB61B38 , 0x92D28E9B, 0xE5D5BE0D, | ||
0x7CDCEFB7, 0xBDBDF21 , 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, | ||
0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, | ||
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, | ||
0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, | ||
0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, | ||
0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, | ||
0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, | ||
0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, | ||
0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, | ||
0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D, | ||
0xC0C10000, 0x140C181 , 0x3C0C301 , 0xC2410280, 0x6C0C601 , | ||
0xC7410780, 0xC5C10500, 0x440C481 , 0xCC0CC01 , 0xCD410D80, | ||
0xCFC10F00, 0xE40CE81 , 0xCAC10A00, 0xB40CB81 , 0x9C0C901 , | ||
0xC8410880, 0x18C0D801, 0xD9411980, 0xDBC11B00, 0x1A40DA81, | ||
0xDEC11E00, 0x1F40DF81, 0x1DC0DD01, 0xDC411C80, 0xD4C11400, | ||
0x1540D581, 0x17C0D701, 0xD6411680, 0x12C0D201, 0xD3411380, | ||
0xD1C11100, 0x1040D081, 0x30C0F001, 0xF1413180, 0xF3C13300, | ||
0x3240F281, 0xF6C13600, 0x3740F781, 0x35C0F501, 0xF4413480, | ||
0xFCC13C00, 0x3D40FD81, 0x3FC0FF01, 0xFE413E80, 0x3AC0FA01, | ||
0xFB413B80, 0xF9C13900, 0x3840F881, 0xE8C12800, 0x2940E981, | ||
0x2BC0EB01, 0xEA412A80, 0x2EC0EE01, 0xEF412F80, 0xEDC12D00, | ||
0x2C40EC81, 0x24C0E401, 0xE5412580, 0xE7C12700, 0x2640E681, | ||
0xE2C12200, 0x2340E381, 0x21C0E101, 0xE0412080, 0x60C0A001, | ||
0xA1416180, 0xA3C16300, 0x6240A281, 0xA6C16600, 0x6740A781, | ||
0x65C0A501, 0xA4416480, 0xACC16C00, 0x6D40AD81, 0x6FC0AF01, | ||
0xAE416E80, 0x6AC0AA01, 0xAB416B80, 0xA9C16900, 0x6840A881, | ||
0xB8C17800, 0x7940B981, 0x7BC0BB01, 0xBA417A80, 0x7EC0BE01, | ||
0xBF417F80, 0xBDC17D00, 0x7C40BC81, 0x74C0B401, 0xB5417580, | ||
0xB7C17700, 0x7640B681, 0xB2C17200, 0x7340B381, 0x71C0B101, | ||
0xB0417080, 0x90C15000, 0x51409181, 0x53C09301, 0x92415280, | ||
0x56C09601, 0x97415780, 0x95C15500, 0x54409481, 0x5CC09C01, | ||
0x9D415D80, 0x9FC15F00, 0x5E409E81, 0x9AC15A00, 0x5B409B81, | ||
0x59C09901, 0x98415880, 0x48C08801, 0x89414980, 0x8BC14B00, | ||
0x4A408A81, 0x8EC14E00, 0x4F408F81, 0x4DC08D01, 0x8C414C80, | ||
0x84C14400, 0x45408581, 0x47C08701, 0x86414680, 0x42C08201, | ||
0x83414380, 0x81C14100, 0x40408081 | ||
}; | ||
uint8_t buffer[1024]; | ||
size_t size = 0; | ||
unsigned int crc = 0xFFFFFFFF; | ||
QFile fin(in_file); | ||
if (!fin.open(QFile::ReadOnly)) return 0; | ||
|
||
//除去head | ||
fin.read(offset); | ||
|
||
while ((size = fin.read((char*)buffer, 1024))) { | ||
for (size_t x=0; x<size; ++x) | ||
crc = crc_table[(uint8_t)(crc^buffer[x])] ^ (crc >> 8); | ||
} | ||
fin.close(); | ||
return ~crc; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#ifndef CFGFILE_H | ||
#define CFGFILE_H | ||
|
||
#include "xmlfile.h" | ||
|
||
class CfgFile : public XmlFile | ||
{ | ||
public: | ||
CfgFile() = default; | ||
CfgFile(const QString &in_file) : XmlFile(in_file), in_file_(in_file) {} | ||
int decrypt(const QString &out_file); | ||
int encrypt(const QString &out_file); | ||
int is_cfg(); | ||
void rename(const QString &newname); | ||
|
||
protected: | ||
uint32_t get_crc(const QString &in_file, int offset); | ||
|
||
private: | ||
QString in_file_; | ||
}; | ||
|
||
#endif // CFGFILE_H |
Binary file not shown.
Oops, something went wrong.