找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15226|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% N* C8 A1 }3 o  z$ d2 a$ e  h( D; K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 f- `7 E" |0 Y# Y/ t5 C% W& ~, G) E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 z# u9 t. y" G1 j; W  k% `3 Xusage: himr <address> <value>. sample: himr 0x80040000 0x0
- F+ n( N" c2 D( X4 ^* Z8 M' v* t0 E6 ]/ K  v1 R; e

! P2 [$ [1 ?4 @3 F5 a6 S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 N' I* d+ [' x+ \" C/ |  Z/ `7 k, A2 S

  S$ I- w; G/ z2 ?) e; s补充内容 (2012-3-8 09:42):) f! T- j, r6 l, w8 _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# ^4 ]) y# M& D2 Z3 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" ?1 ^: J  I; f. @3 H

) M# J5 I5 o; x7 e8 X4 _% yhimr <address> <value>. sample: himr 0x80040000 0x0" P) L; }: R5 Y: j0 g# K0 ^

" V, b2 F2 B4 g4 j例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 p- M' J, l$ z' ?4 W' M% W3 Yhimr 0x80040000 0x00: N" z- M; W: ]6 \7 b& E
himr 0x80040001 0x11
# k- ^5 `; o% Y0 s& thimr 0x80040002 0x22
# d. d, W5 l* T2 Whimr 0x80040003 0x33
" `) Z$ ]8 v5 V% ahimr 0x80040004 0x44
# u8 n+ }2 B! U2 _, s8 Hhimr 0x80040005 0x559 Z% q* D, E4 }, _) T

. `6 ?6 E; w7 m0 l+ S9 cSN也是类似。1 s& P( o# ^# q6 \, {, @
  r% h! p. }9 z" g: H" A  r. \
现在主要是,谁告诉我们MAC和SN的地址?
- A( p' X1 h. y# s/ L# K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" O0 v0 U: Q$ n' l  K0 J一直想找到运程修改MAC和SN的办法,苦于无解啊
' a4 p8 W9 E& M  C. [5 A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / G: l, v* d: Z- }- x4 `  [9 S

# [4 W: N9 n3 E, g/ U, H; t. H修改的代码早有了。到今天不会编译。
( F* o2 X7 c# e$ w" _% K& l. {2 E需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( w+ `$ p, x: u6 S) t
  2. #include <malloc.h>4 q, h/ k& z, e2 W: w; @
  3. #include <sys/types.h>
    ( P: Z3 G+ N  B
  4. #include <sys/stat.h>
    ( f6 e# ~$ J" Y
  5. #include <sys/ioctl.h>8 P3 }6 U' c/ k. r
  6. #include <stdio.h>
    2 u! n' `1 H: B0 w
  7. #include <string.h>. T/ _  B, u/ z9 y! \1 ~

  8. ) U* U/ G( H# d  b* E
  9. typedef struct {
    : |+ }( [% ~1 p3 [, l
  10.         unsigned int        e2prom_cmd_sub_addr;1 C( k% y. L* k5 h, E5 E& Y) g8 g
  11.         unsigned int        sub_addr_count;
    : L1 h* L: N; I7 f) u; V
  12.         unsigned char*        e2prom_cmd_data;
    # [! c' ~1 Q  S
  13.         unsigned int        data_count;3 U  B8 C1 F# i* v: Y
  14. } e2prom_s_cmd;
    % \+ C. Q+ n" w( A
  15. # T2 {/ J. z5 s- \# v" z! S
  16. #define E2PROM_CMD_READ 1( l' d( d* \) R
  17. #define E2PROM_CMD_WRITE 2: ]" n: D5 X) R3 v( k4 X; m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 O- ^. Y2 m1 }
  19. * O8 R5 K3 N2 E" w  Z# s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 E4 g( m" d) }9 x9 `  A
  21. {. ]. {/ j; L/ Y  I
  22.         int fd, ret;  X7 p9 U) N6 t9 K2 w- Z$ m
  23.         e2prom_s_cmd arg;0 Z/ T: X) L! U: Q2 A+ q7 T1 N8 c
  24.         unsigned char buf[0x18];
    ' D4 t: {' _; v& W  ?
  25. " [$ k! D5 w5 Q/ U$ {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* Q. i7 h; t: j. {
  27.         if (fd  < 0) {3 Q6 h6 X/ c3 N# h# t0 H. d
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! V! a& p  n7 Z2 }
  29.                 return -1;6 `: i* ]1 r- y$ P! x
  30.         }5 ^0 w$ t' O! p. j& L9 M+ ~, W
  31.         arg.sub_addr_count      = 2;# b4 A- l8 ^! y3 U0 m3 X' N3 R" v6 |: Y
  32.         arg.data_count          = 0x18;
    6 k" Q! N+ c3 W& g2 x- T
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 v7 P7 |& Q- \5 O
  34.         arg.e2prom_cmd_data     = buf;% m. @& K8 @4 X& |2 N8 N( `
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) t) ^! t* d$ D  W+ `. [. j
  36.         if (ret != 0) {$ J/ m' K& s  \8 ^$ L1 ~3 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : i& ]+ s# y! i
  38.                 return -1;
    : a8 P, z: h* B# f# u0 h
  39.         }5 k4 K3 o9 J7 {5 L) Y0 q
  40.         memcpy(mac, buf, 6);0 R8 `0 g) X2 R& i, G& D5 n
  41.         memcpy(stbid, &buf[6], 18);( G9 S% m1 W+ {! }8 \& t. Z* J/ y
  42.         stbid[18] = '\0';4 m8 [$ s% p0 ]

  43. - e- [8 F8 a" Y2 V! w
  44.         return 0;9 d) @) R9 ~) _8 A
  45. }
    4 m4 k: Q/ |! n8 j4 c
  46. 3 D& f2 w2 u6 x3 X9 L4 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 _% c+ B9 _9 X) W
  48. {( |% g2 @4 b$ U9 T' N
  49.         int fd, ret;
    . L, n" X# Y' W( s) R! r
  50.         e2prom_s_cmd arg;" `% h& [1 l7 C+ Z0 N! t
  51.         unsigned char buf[0x18];
    1 c0 s; B5 ~7 x

  52. ; I9 v) y+ t$ P9 V7 r! t: {
  53.         memcpy(buf, mac, 6);6 S. w7 c- r' Y  [, |4 S! d4 `
  54.         memcpy(&buf[6], stbid, 18);5 S6 r# L* o( p( ]/ @# ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) @9 L9 W+ J, x% n8 b
  56.         if (fd  < 0) {- N! u5 t7 L4 n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ h1 k% `0 ^$ f2 X' e
  58.                 return -1;
    6 A4 f' o0 m$ @1 S4 i
  59.         }
    * m* y( _# V) z4 M3 E
  60.         arg.sub_addr_count      = 2;0 ]0 k- l2 q8 ^
  61.         arg.data_count          = 0x18;* m2 S1 s# u( C$ F! \' a7 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;' c* h5 n4 o  E  s/ H" S
  63.         arg.e2prom_cmd_data     = buf;
    5 W$ {8 p0 D  }2 R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 i& `3 Q2 g# b
  65.         if (ret != 0) {
    ; n' m: Q7 ?5 r3 K- g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) ~' `2 M- Z& [
  67.                 return -1;
    1 E3 _4 `' w9 d
  68.         }
    ! Z; M- o$ y5 }5 C5 g/ s% N

  69. ' |1 f/ J# W# W" i4 Y( P, W" v8 y
  70.         return 0;/ v0 n* k" }; u
  71. }
    * I) ?. Z+ L5 ^# x$ V3 c

  72. 2 j# w3 j1 a9 w) |! j
  73. int main()
    3 |. G5 K% Y9 C
  74. {9 p" P+ v* w% ~( P% _$ n! q. g7 w
  75.         char c;
    % e! I9 x8 Q# _3 O! {: N
  76.         int i, macs[6];; x5 ~3 T) G( d4 j$ ]8 j
  77.         unsigned char mac[6];* h% p1 N6 }1 {  N! l
  78.         unsigned char stbid[256];
    $ T. [# x$ w9 L( r  I& @  V

  79. ' ~- o" N$ O2 m1 Z
  80.         if (readparam(mac, stbid) < 0)
    8 @9 k7 E- x& I4 Z
  81.                 return 1;
    * W6 V* B; `( b

  82. 2 _- {9 C, v/ y" i$ F) [+ I  U
  83.         printf("Current parameters: \n");
    9 D4 \& W( ^  K- n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 a3 l+ L4 }% L4 X' E1 u9 T
  85.         printf("  STBID: %s\n", stbid);
    5 _* h" h1 S6 w1 C; v
  86.         2 ~! F3 L' u, }$ G) [+ l- M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 A, j- i6 q; r6 }7 o% o  z7 `$ E: R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {: {5 {/ ~6 f' U4 p* t
  89.                 printf("Input MAC error\n");
    ) n/ Y. D# r4 q9 C- Z/ B
  90.                 return 1;
    4 C; T) T+ D1 l8 c) d+ d
  91.         }
    ' r8 D  _, T6 u* ^& z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: i' k. \  _. q+ }  V) x* f
  93.         printf("\nPlease input new STBID: ");
    # H! ?/ c& T5 c! X, }8 V" U& w$ L
  94.         scanf("%s", stbid);
    # t. p* ~3 ^% D6 w0 V0 D% J+ S/ L
  95.         if (strlen(stbid) != 18) {3 {$ G3 `+ F' O4 a8 z4 P. a* H
  96.                 printf("Invalid stbid\n");
    : O" K' I( {4 m' Z' |# F
  97.                 return 1;! R1 D( m3 T6 u9 M  b
  98.         }
    ' ^( b" e7 e4 N+ g& q
  99.         printf("\nNew parameters: \n");8 |. q3 e) C) L, q2 `! r8 W2 ^7 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( X: K! Y& R* x5 w, ^% }+ E
  101.         printf("  STBID: %s\n", stbid);. z9 M( j* ?8 p' ?2 ]* F' G
  102. 1 r7 ^3 p0 }7 t1 O0 u
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 }+ q, F# u5 i4 C" x% s6 t4 a
  104.         for (;;) {
    ) b$ _8 Z- @! a1 f' z, m6 `7 L
  105.                 c = getchar();' Q$ g' e0 D) j6 J8 C! z) G
  106.                 if (c == 'y' || c == 'Y')( u. ^: Y0 I% o; Y' A8 P
  107.                         break;1 }% G9 R: Q" q  n$ q: z
  108.                 if (c == 'n' || c == 'N') {. S( @  I2 g' Y3 m- ?2 V
  109.                         printf("\nAborted.\n");- l4 L; n. S3 Y* }+ P
  110.                         return 1;8 ~% s  V# n" ?6 j/ T& ]
  111.                 }
    / X$ o7 Z3 P& p2 U3 v; r, X
  112.         }
    4 l7 L4 R: H$ d" ]+ B2 p7 k& d& C
  113.         if (writeparam(mac, stbid) == 0)
    - g: ?; k6 k; r5 a
  114.                 printf("Parameters changed.\n");
    # \, ^- m( W7 \: i; A

  115. 2 _) k8 g' D6 r
  116.         return 0;" k& i  K. b5 l
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
6 U- D6 K0 u& H6 u+ C! p0 x% ]5 L( ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* H$ c+ f, Y* ?1 ?+ K. H; g1 g你用的编译命令行格式是什么?
$ G, ]& f) V$ p. B8 c2 s4 c) U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-7 21:14 , Processed in 0.045760 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表