查看: 16762|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! u' Y# F: x% p
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( d& T' B7 `, ?; N2 ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
1 s' H" p% [& O& K& gusage: himr <address> <value>. sample: himr 0x80040000 0x0, L: f( \: M1 w
  t) u1 T7 m- @

- N& u" ?. z! l( K; u& u, s不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 C' q$ E$ v5 N, z

, i8 k  y& b3 t补充内容 (2012-3-8 09:42):
* a% v6 o  f8 {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& b* V; F: c% d7 m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。! F5 R0 ?  X% q0 r

6 \0 j8 z5 J, ~" h: qhimr <address> <value>. sample: himr 0x80040000 0x05 @& }) b3 ?* G' A3 d; W# @

+ P3 n6 T7 e& ?' m. e例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# \7 P8 }2 w) W5 `) Bhimr 0x80040000 0x00
( |9 ?: ^- X% L* R# \8 i# Phimr 0x80040001 0x11% j# j4 e" |* Q  \! Z
himr 0x80040002 0x22
6 \  ~: t  m( [  N+ q, P, Mhimr 0x80040003 0x337 i: R+ F( g3 C2 z
himr 0x80040004 0x44
# r3 k9 F& N# @, ^himr 0x80040005 0x55
; [" x* P. I9 \9 z  N4 s% K& v1 y& O  k
SN也是类似。8 T: v4 W: t" X$ A% h; W- ?
1 T4 ?' l; Q1 U
现在主要是,谁告诉我们MAC和SN的地址?% S) ?& C2 }! O: a
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : l7 ~* t4 _% X$ H
一直想找到运程修改MAC和SN的办法,苦于无解啊

! p, b! x) B: W! C- J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( T3 a; X8 @6 U3 s) |
$ W4 }( G$ C1 T修改的代码早有了。到今天不会编译。
5 ~8 S2 t+ |% F! ?4 p  E需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 v9 E0 ~8 E! e1 q
  2. #include <malloc.h>, Z" \7 \4 y/ T8 W9 ^# Y3 ^" D2 w
  3. #include <sys/types.h>
    : S0 y1 E6 Q+ `0 C
  4. #include <sys/stat.h>( k. |+ u) x/ D. k) E& `
  5. #include <sys/ioctl.h>
    5 {0 g5 K2 ~5 a/ ?, X# a
  6. #include <stdio.h>. L+ w0 P# g; ?( |: O2 E: z+ |
  7. #include <string.h>, n& \4 O2 W* C1 ^* \2 B: s, Z" z

  8. $ p8 i- u2 ?& P+ ?- o$ ^0 z
  9. typedef struct {
    1 ~6 V" v$ ?6 y% S
  10.         unsigned int        e2prom_cmd_sub_addr;5 Y. `6 z/ y  o: b; \
  11.         unsigned int        sub_addr_count;
    7 r, R! k& N9 g. u
  12.         unsigned char*        e2prom_cmd_data;
    ( h; D2 T) Y6 a, z0 Z9 w
  13.         unsigned int        data_count;
    ( c" v7 s# O' S
  14. } e2prom_s_cmd;
    , G5 h! ]4 g' e. Z0 W7 `
  15. " r$ E0 f& B5 W& V
  16. #define E2PROM_CMD_READ 16 ~, L+ e; D- f0 }% }0 _
  17. #define E2PROM_CMD_WRITE 2
    8 j' O& c# j: j* R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* ^) \1 Q! r. ?8 ]

  19. 5 Q6 d( \' ^9 B8 h# t( w
  20. static int readparam(unsigned char *mac, unsigned char *stbid). Y, ^& e0 q& J) ]& I! n, \" Q
  21. {% ^0 P1 Z" t/ b
  22.         int fd, ret;# o: l+ Y# U  ?! m% m( C5 o7 `0 M/ }
  23.         e2prom_s_cmd arg;' J0 R  @- a: `0 a0 x
  24.         unsigned char buf[0x18];2 i) y: \5 i/ l

  25. $ t* ^" Y  K) Q5 |! g& b. E' ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 }% `' H1 B( j7 Y3 A/ H
  27.         if (fd  < 0) {! Q7 `6 m5 ?/ d* S) w+ f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; D/ b* G7 Z) ]) W5 S5 G
  29.                 return -1;4 _+ l& g4 }+ N3 v: s7 m$ m
  30.         }
    4 |% f, H0 K" _) j* _
  31.         arg.sub_addr_count      = 2;( _. G/ `8 u+ P
  32.         arg.data_count          = 0x18;- N# {1 f% Q9 I! Y" [0 P1 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;# c( a, W2 E+ Q" y
  34.         arg.e2prom_cmd_data     = buf;
    5 R0 E- Z4 ]/ }9 j3 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' f0 x) @2 }* U9 V" u8 U
  36.         if (ret != 0) {
    $ x& M2 ^" }6 F& S4 T9 ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  V: X/ T9 ^+ W
  38.                 return -1;1 Y3 p$ d6 s8 d; y# N' A  |
  39.         }; q4 H3 k9 G4 z
  40.         memcpy(mac, buf, 6);9 l# L/ Y  I; H& v
  41.         memcpy(stbid, &buf[6], 18);
    * z, v# {7 \" i9 n! A3 S
  42.         stbid[18] = '\0';
    8 Y2 j: ?  t) J& I  i% A
  43. ' ?$ \0 p1 n. t+ R) g( y
  44.         return 0;
    2 M1 e: H- M" X, B+ V
  45. }
    : h! I, n3 S" C# K7 d, P

  46. & t- w9 g5 @/ y( s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 P/ z# r) S7 l* x  E. t, K2 q
  48. {
    5 u+ P* O  z2 r! a9 @/ g: w
  49.         int fd, ret;
    & R, n8 \6 V% J9 L
  50.         e2prom_s_cmd arg;
    % ?4 @: k$ @- Y$ r! h
  51.         unsigned char buf[0x18];& w; Q8 g3 K+ x- Y% m2 K7 \
  52. 3 ?) r& Z' h; A; J0 g- l# C
  53.         memcpy(buf, mac, 6);
    & M( b$ f/ [2 J4 u. Q
  54.         memcpy(&buf[6], stbid, 18);
    + {/ y" l. @. d: c5 n8 q8 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! E1 Y6 U- F: n
  56.         if (fd  < 0) {
    ' q1 J9 A$ y$ X# t7 D5 J: O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      ~2 o7 X7 s, y! d* U5 F6 s  o% \* {
  58.                 return -1;
    3 T3 A3 E) B" U! ~9 \' }: q2 N+ |
  59.         }
    8 \% j( Z9 V7 g+ Q
  60.         arg.sub_addr_count      = 2;. u/ {6 @0 x) q. L
  61.         arg.data_count          = 0x18;8 Z8 g8 N: r  q3 O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : `& {* r" q7 e5 k' f/ k. z
  63.         arg.e2prom_cmd_data     = buf;4 R, Z2 q; o$ _; s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 q; b, a% L) _4 P( U- O
  65.         if (ret != 0) {( g# `. J6 ]3 {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - V; B0 t" y3 z! N
  67.                 return -1;. ?  O. b1 o: B; W6 `0 g; K0 B
  68.         }
    & Z% g( W& l. S! D2 t. O: k( B

  69. . ?% H$ l; u( u$ h& P
  70.         return 0;
    % A! V8 w+ Q; [0 G. P: z3 H" W5 F3 P
  71. }
    + R/ }, a4 c! d# S
  72. 5 R. h. p' d- G& J6 }
  73. int main()8 j) Y- e4 U2 g7 A
  74. {0 q! f  A3 K: y; @& }7 @! t0 s" y
  75.         char c;
    : `, J! v8 G& V1 F% L
  76.         int i, macs[6];
    * p4 z% _- z3 S; R/ h
  77.         unsigned char mac[6];  P2 b4 O+ X0 h+ l0 b8 ~
  78.         unsigned char stbid[256];
    8 g2 e3 W9 J: c5 A! e
  79. ; y! ~8 C) d, K# r
  80.         if (readparam(mac, stbid) < 0)
    , c. @; ^, d! Y$ K* V( }7 S* J
  81.                 return 1;
    + @  v* |) }) M, U% E$ V# w
  82. : n/ V" _0 {3 _, }! U8 Y
  83.         printf("Current parameters: \n");
    5 s, ?& N% o5 M( m5 W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 g0 f' L- Y3 V# x
  85.         printf("  STBID: %s\n", stbid);
    2 M3 Y& B3 o3 |5 e# j
  86.         3 Y- A: v/ U, V* Q* Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 ^( ?9 y0 s& T( P$ y8 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 G+ G8 a' ~6 a# Z
  89.                 printf("Input MAC error\n");
    / _3 J4 S3 G( o/ p! z/ E: t
  90.                 return 1;
    % _( [* V1 ^4 E+ e
  91.         }2 u- w9 y! V' R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! ^$ {$ x1 Z5 k/ D+ j
  93.         printf("\nPlease input new STBID: ");
    8 r7 E9 t- v* T9 [$ t  M
  94.         scanf("%s", stbid);& ], }! V9 A2 @$ Y8 ?
  95.         if (strlen(stbid) != 18) {
    : L' o  f+ j' }0 S8 N2 y
  96.                 printf("Invalid stbid\n");. d6 Q3 m$ M$ F! I
  97.                 return 1;1 N7 I- L, i# ?( ~
  98.         }* `# W7 q2 I: s& y+ ?: ]3 c! t
  99.         printf("\nNew parameters: \n");# c8 n) k8 |+ x& C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - i! E, l: `* t
  101.         printf("  STBID: %s\n", stbid);' _' t  H# n; W' G7 m1 n
  102. 6 t* c' U& r! A
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 q( u0 n: t7 ]3 Z3 r
  104.         for (;;) {
    5 I. `( \5 ]! i* U
  105.                 c = getchar();
    + x# U, u" K" G( w
  106.                 if (c == 'y' || c == 'Y')" g. _  R& J; ^$ d
  107.                         break;7 ~- p9 v4 l5 @' C
  108.                 if (c == 'n' || c == 'N') {
    0 j' A" G; j$ K, q
  109.                         printf("\nAborted.\n");3 d( f9 c, T& Y7 z, z! P
  110.                         return 1;
    ; h- i4 M. \! _/ t& s: @8 L) }
  111.                 }
    1 R) s: Q) ?$ |+ a" @5 A  v0 J7 U
  112.         }; _6 G3 ]* p: [) a* A! U
  113.         if (writeparam(mac, stbid) == 0)
    ! {! z) T$ L# c" e0 A+ t
  114.                 printf("Parameters changed.\n");9 f4 v* g8 n0 `/ @% ?3 t- |3 S) N% u
  115. 9 e8 R3 m  u/ m9 U
  116.         return 0;1 h( u" D: n' B2 o/ X% V) W' _
  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
0 {% u7 g3 I- ]/ @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 e7 X' K& S, q3 g你用的编译命令行格式是什么?  A9 f/ L. X8 g6 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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