查看: 17433|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 s- M, `, p0 Z" N- v+ I; x, }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( R6 N" G: d, d  G6 W' w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 B4 X- h6 M  W  W. o6 nusage: himr <address> <value>. sample: himr 0x80040000 0x0
7 R6 X3 {9 R$ U9 v7 D6 [2 s* G: W- w. B' i5 o
; p! ^* X! E; L% d9 u' [% k3 l8 H: W  E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' l2 H/ C' H7 j
& S) ^* m9 O5 x; {" v* v2 n补充内容 (2012-3-8 09:42):* R  W2 O! K2 n( }
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 e. [& s8 D: `3 P- F8 O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' k5 m8 h: K* ?7 Q3 g$ s; G1 a

9 k7 h! c2 X: O. {  |himr <address> <value>. sample: himr 0x80040000 0x0; t( ?! R  y3 \8 `$ @
( t3 t- [: @7 p8 g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. D' ]( P& {$ Z5 j' M
himr 0x80040000 0x00( @! A2 Z( g, F- Y/ e$ x
himr 0x80040001 0x112 T8 K- m- Q! k2 \6 j1 O) m! d4 Y
himr 0x80040002 0x22; r- ?% A9 o( I# f; W
himr 0x80040003 0x335 p, d2 r: H# i
himr 0x80040004 0x44
6 \+ {2 v- [- _himr 0x80040005 0x55  Y8 I4 C# @! y9 m; a% h. {

8 @. B8 v, y4 ~; a) C$ HSN也是类似。7 C6 m$ g/ w0 L8 a7 G9 s

, [# `" E- W3 |1 x现在主要是,谁告诉我们MAC和SN的地址?% q/ s! e7 \7 W/ ^% H1 J1 a( D; R& B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* Q( ~9 A" M  b' |; Q9 z" t一直想找到运程修改MAC和SN的办法,苦于无解啊
  j8 @$ m9 G; c/ g
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * D5 L( T3 Z# O+ W2 [0 _
8 j6 W* e0 _$ c( c0 q$ d3 J
修改的代码早有了。到今天不会编译。
5 y8 w4 X! V5 u: g! F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , }2 K) h6 W# R2 @# B# n7 p+ w6 |6 V
  2. #include <malloc.h>9 _" e4 ]) I& q6 W! g
  3. #include <sys/types.h>
    ) @( V2 l- r, {. T( t
  4. #include <sys/stat.h>
      P1 }7 n) u& }# Z& m! u7 V
  5. #include <sys/ioctl.h>0 S2 M0 s6 Y8 B* N- G9 [
  6. #include <stdio.h>
    5 L. R# {. n, B: N3 u* s' Q
  7. #include <string.h>
    2 C; \# E2 V$ H" \

  8. 5 p, X1 M. D7 K  N
  9. typedef struct {
    1 s: D3 y& r; m: w8 W
  10.         unsigned int        e2prom_cmd_sub_addr;
    * q9 s+ y( x3 D  C5 U
  11.         unsigned int        sub_addr_count;
    ! Y5 B7 ~* O+ F5 O
  12.         unsigned char*        e2prom_cmd_data;
    " C2 i& W8 _0 O
  13.         unsigned int        data_count;: `( r7 d7 l, d+ }0 L% b
  14. } e2prom_s_cmd;* |( E4 V; I- x8 W# [- I
  15. 4 n7 ]4 N+ p1 D' m
  16. #define E2PROM_CMD_READ 1
    " q7 Z3 a/ @& C  ?% X
  17. #define E2PROM_CMD_WRITE 2
    6 \6 G& }6 v8 k# ~  M! Q7 S* t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 P5 G0 I+ P# U. N

  19. ' y; u( Q  W+ o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 `. t2 [# K% F
  21. {" \! ]  |- |. N: h$ |( {
  22.         int fd, ret;
    % [3 I( m: E$ f
  23.         e2prom_s_cmd arg;% d/ h; ?1 ?) d; A" {
  24.         unsigned char buf[0x18];6 T  D- x# J9 p$ A
  25. . D4 G& b' ]# X) g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - c. J, T0 u) H% R! \0 E
  27.         if (fd  < 0) {
    8 F5 Q/ p: D6 z" [( C! Y2 S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% L: I+ l  H8 d5 B, g
  29.                 return -1;: d0 m: U: c6 x( j6 b
  30.         }
    : x5 @5 P( d; z9 d
  31.         arg.sub_addr_count      = 2;% S1 ^$ ^. {* ]' w, t# t: ^
  32.         arg.data_count          = 0x18;
    , e6 z- n  P6 r# G% q. Z- ^& P
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 D+ B2 F0 f% o2 t& y
  34.         arg.e2prom_cmd_data     = buf;
    * S! }/ \8 B" ]: y* j* G' q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; L& r( C1 D. [' e7 ?
  36.         if (ret != 0) {# y% _8 |2 k4 ]- w: h& ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 {- Q: a2 _( V* o! B( P9 I9 ^
  38.                 return -1;
    6 R8 q" E7 D3 K- a
  39.         }5 n! b" y) B- i9 d% I5 d
  40.         memcpy(mac, buf, 6);
    ' a( o6 z6 ?1 v8 H
  41.         memcpy(stbid, &buf[6], 18);
    " S5 i8 C5 u6 V" d+ G, A  w
  42.         stbid[18] = '\0';
    7 S: e. c* Q6 j; p0 }

  43. 3 h* n' |( K- ^
  44.         return 0;
    - U0 i! ]" A; J1 @5 }
  45. }
    ; I8 M, o. j6 L4 Z/ C' ?" g' E

  46. ( n6 J- F/ |. h3 a% d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 |/ e  ^5 J, i7 \( `! c
  48. {
    ( p8 ^5 _) J' ~( Y
  49.         int fd, ret;
    2 y; h1 c: e: w1 `
  50.         e2prom_s_cmd arg;1 ^! R) E$ G; c' i' [
  51.         unsigned char buf[0x18];
    + v3 o% w* S+ `) Z4 I% T

  52. * x* [; C8 c- u. [5 |) }4 b  N
  53.         memcpy(buf, mac, 6);, M( T- y) ?( {+ i+ ~
  54.         memcpy(&buf[6], stbid, 18);
    2 i$ p0 I( ~8 ?/ p1 v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ M* h9 F8 B. U3 U3 g
  56.         if (fd  < 0) {2 u+ {; S) b  |4 Y% u$ K' o* b' K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . t3 T# L# D% \0 e; w
  58.                 return -1;
    7 t* J; r( K' q* q. }; I
  59.         }
    5 O+ g3 A7 J  Z+ [! I% G  {
  60.         arg.sub_addr_count      = 2;
    ; c# |# E, g7 x" u4 \
  61.         arg.data_count          = 0x18;: I& c9 r9 `# S. m2 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 X' U& D6 c" C* J  _! s$ [
  63.         arg.e2prom_cmd_data     = buf;
    3 o  j- g; b# k  m- R  ?, V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 a. u, e/ I: p
  65.         if (ret != 0) {0 S! y" n9 r( R5 ?' D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 P2 K6 s  T/ x' y. j
  67.                 return -1;
    5 H$ r$ v# K: U9 g9 z! @+ N
  68.         }0 X* f/ W8 ]# w& l8 {

  69. 7 C, n7 k( |) _
  70.         return 0;. g" E( Z/ `& R2 @0 u' t
  71. }
    - w7 c' }0 r( u0 o$ P5 ]
  72. 2 c% M' J. t& b: j& B
  73. int main()7 _2 b* W! c- Y9 T) q* i
  74. {* j3 d  I. O1 r4 i' P. ]
  75.         char c;' Y5 u7 l9 D( s7 t2 v' l/ N0 {4 O; N
  76.         int i, macs[6];; V7 ]; F: ?( d& s( _
  77.         unsigned char mac[6];
    / _- l+ |, H) U0 j; c7 ~% v( E
  78.         unsigned char stbid[256];
    3 N; E5 F5 X  o" p

  79. ' d( Y6 G. ^7 T  W
  80.         if (readparam(mac, stbid) < 0)
    $ D  S' F' s0 O- o
  81.                 return 1;
    ( C! J( V7 @8 {0 w+ E

  82. * L/ ^6 a! y, D# l' X! \) H6 }
  83.         printf("Current parameters: \n");- W" Q0 F# X; o' p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ T' l% |( }2 e+ u  J% s8 o0 ~
  85.         printf("  STBID: %s\n", stbid);
    3 Z9 M+ c8 Q  X, p0 j
  86.         : l7 r4 E( ^/ J( T6 w; X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 d% _9 e" S( C# z- \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) H' {0 X4 G& o- N8 P5 D
  89.                 printf("Input MAC error\n");4 G6 L  c" m, F$ R, H$ z
  90.                 return 1;
      X& K# b$ V' g
  91.         }" X, c" N& t2 T3 Z4 e/ [8 `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 u0 u" o9 V; y
  93.         printf("\nPlease input new STBID: ");
    , Q5 H, T" S: j4 C% Z7 M
  94.         scanf("%s", stbid);
    7 M9 [! g: Y8 {, w" V! h
  95.         if (strlen(stbid) != 18) {" B, m; O# h6 a  i9 \/ ~3 M' q+ }# }* V
  96.                 printf("Invalid stbid\n");+ G; [" I- S! \
  97.                 return 1;
    8 P8 d1 \; q. j3 S$ h
  98.         }
    " v4 {$ D0 ?% y' z! t
  99.         printf("\nNew parameters: \n");
    ( o( l9 F& l# u( [9 F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 i# }: y9 {& P2 J# b) h' ^* s
  101.         printf("  STBID: %s\n", stbid);
    4 _! N. x$ D* f* `7 j# `/ Y

  102. * l: {* G% S+ K! j2 W3 q6 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' `. H4 S& j5 n
  104.         for (;;) {- d4 ~' n  i8 C5 U" `
  105.                 c = getchar();. I- E5 X+ _5 u. N" `
  106.                 if (c == 'y' || c == 'Y')
    8 j. @- g0 `1 v
  107.                         break;6 v3 L" @( T' X9 V- X# E( W
  108.                 if (c == 'n' || c == 'N') {$ q9 Y; s, E# o
  109.                         printf("\nAborted.\n");
    6 Q- }4 I6 H4 N: x: ]0 O5 Y
  110.                         return 1;4 h# i0 O2 w, f2 g
  111.                 }* d0 l/ e% N" j6 u% t3 C
  112.         }
    " f* I4 A( g, J. ^& a' N% r
  113.         if (writeparam(mac, stbid) == 0) ! ~9 h3 O& ?9 q( J: {
  114.                 printf("Parameters changed.\n");& M  P0 G- c1 M8 v  E
  115. 1 y3 I: R3 ^; O' i/ I% O1 x8 y
  116.         return 0;
    5 T# E  k  e6 A2 |6 S/ M2 K
  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
2 ^0 [% c( z$ O& U8 C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 f; B1 {$ f% v+ d/ g: J8 O" @3 L" \% ^5 l
你用的编译命令行格式是什么?) N8 z8 F* V6 {: w
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部