查看: 17952|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( S- n! n* V% c5 b0 S3 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' ]: Z/ e2 a  J+ ?" L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 S/ |" m: f7 X: r( X5 m
usage: himr <address> <value>. sample: himr 0x80040000 0x06 x* f9 E! z" V# U

( h& g/ K+ t( o2 H( S8 \' c4 a% m# I$ z7 `- L$ _$ o
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- v: l) g4 X$ T5 o, Y7 O1 ?3 H3 D. @  |/ q7 c$ f) y
补充内容 (2012-3-8 09:42):
! b2 i2 e1 r3 a  _5 ?' x3 P5 ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: O% S; O: \+ ^/ o3 |
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 r5 B5 T# v1 O" ^
( M  T. J$ x" ]# X8 Whimr <address> <value>. sample: himr 0x80040000 0x0
5 z' G& A+ ]! ?' J( I9 P/ |* z6 t. P! ]3 b; K) q0 b7 ~
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# n4 c' d2 s6 V+ r8 P/ D
himr 0x80040000 0x00' C& ~+ @/ X- n* e: r
himr 0x80040001 0x11+ F1 P; q' F2 G0 P, ^' l9 L* b
himr 0x80040002 0x22( J- @9 K; d! d8 U, p
himr 0x80040003 0x33
# h! }' v1 J. Z5 A; }4 \himr 0x80040004 0x44
, t5 T: t6 }9 Khimr 0x80040005 0x55
# }4 I+ P3 C; [% f# n) w7 _( e. G1 C% v2 Y- k. \0 X1 \
SN也是类似。! O/ N) B+ {' N1 E' M

, Z& ~# g! u2 }2 [! I  ]" m/ o现在主要是,谁告诉我们MAC和SN的地址?
7 A, v" f$ A$ f- n" B% x& c; S3 f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ G4 s+ ^, k, Z1 x2 {
一直想找到运程修改MAC和SN的办法,苦于无解啊

8 |' V6 I1 @' s% N源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% T! ~" L% O8 F+ x  e8 A/ ?7 j9 v) ?4 g  o6 V% Z4 L3 _, t0 r
修改的代码早有了。到今天不会编译。
; M  P9 a& h, k5 f% N, u+ g& ]# X需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: W  S* t/ K7 t
  2. #include <malloc.h>
      f6 z; f6 x# S- P* G' f
  3. #include <sys/types.h>
    5 E4 J) [; x5 y. u8 v  U" y
  4. #include <sys/stat.h>( G+ @9 C6 x5 f$ l0 T+ L# P1 I' B$ b
  5. #include <sys/ioctl.h>
    * e  E' h* {3 O$ u9 Q7 U/ I
  6. #include <stdio.h>
    ; k2 T) x+ n7 O( {
  7. #include <string.h>
    6 T5 u, e! y- v) Y4 [3 W8 b

  8. : X' h1 g. {1 q0 d1 u) E
  9. typedef struct {; E8 c+ _1 U6 A4 p9 a
  10.         unsigned int        e2prom_cmd_sub_addr;9 L3 O  B6 X7 n
  11.         unsigned int        sub_addr_count;8 h; y6 p4 K( r& P# N
  12.         unsigned char*        e2prom_cmd_data;# p/ U. q/ \/ C: ^3 y3 \" X# N
  13.         unsigned int        data_count;
    $ y$ u3 H/ n* g/ y
  14. } e2prom_s_cmd;
    ' R6 T% t1 j  C) L
  15. 3 ?$ i0 d$ D8 T& D0 W2 W
  16. #define E2PROM_CMD_READ 1; ]4 R& p, r" Y5 z5 L
  17. #define E2PROM_CMD_WRITE 2; j9 R) N/ [% n( C7 C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( d3 q7 Y& S3 [; z# c; \. e, z
  19. 6 v6 s, j& B1 O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 c3 A: V% @8 C. O
  21. {
    % c3 p5 b% y) Y4 R7 ~7 F3 ]# b" N
  22.         int fd, ret;
    ' f; \- B" r7 m2 }7 n# d, {
  23.         e2prom_s_cmd arg;
      P% B# Z" ?! i7 p# s7 `
  24.         unsigned char buf[0x18];
    , Z1 ^% f6 s$ M! _+ Q

  25. 2 @6 J" y3 G9 ?$ E" ~6 ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( H3 _  Y8 N3 J5 j7 o+ ~; R
  27.         if (fd  < 0) {
    5 X5 h; G& T; R9 j8 {* p/ ~& E9 j0 H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 @+ o2 E" |0 n7 `0 c3 |
  29.                 return -1;* t8 b1 H5 k# m
  30.         }) A# H  U( G4 w9 M3 p
  31.         arg.sub_addr_count      = 2;
    9 ?' p/ c3 ]" q; `' }+ P7 X
  32.         arg.data_count          = 0x18;
    , x6 s8 P7 R0 F( q( c: A9 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 G/ l$ [% h5 B/ ~5 N- E6 N9 ?
  34.         arg.e2prom_cmd_data     = buf;$ i* Q, X$ k; b; s) ]3 s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ @5 W$ j7 `6 G2 r' Z
  36.         if (ret != 0) {
    * t4 r6 |. a9 N. p' S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- }  Q! o. X, o
  38.                 return -1;. {' T: |' i6 Y* c9 n
  39.         }' h! J: Y8 x6 \2 D  \5 t: t
  40.         memcpy(mac, buf, 6);- n* F9 A4 B! G$ c
  41.         memcpy(stbid, &buf[6], 18);0 K2 N; h  I* E1 z9 A! O
  42.         stbid[18] = '\0';
    # d# S! ?, s5 g5 _- ^5 L- k+ U3 _
  43. & d% d: K3 A2 M2 y
  44.         return 0;
    / J3 g7 P. r0 [
  45. }
    3 o+ v8 o/ s% E. u

  46. 9 N% m6 H0 g: `) s3 v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 u% |4 Q0 \7 S0 g% G0 d' x
  48. {! [6 @9 _% |) V2 X- o+ s. n, |5 _  R
  49.         int fd, ret;. t* r& T9 O/ R% Y$ J5 v" M$ @
  50.         e2prom_s_cmd arg;
    % D$ n: g) J7 L3 l
  51.         unsigned char buf[0x18];9 ]/ _  Y% X" i0 \
  52. 6 U1 g) I: f  Z
  53.         memcpy(buf, mac, 6);
    % {. G' [8 W" m1 u6 F$ S5 N  J- v* D; C
  54.         memcpy(&buf[6], stbid, 18);
    8 t& Q' n3 m6 r* H( W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 w- W9 r. K$ L" R/ M
  56.         if (fd  < 0) {
    " ?0 C+ q6 A: U& x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) Z8 {8 {' I- Z
  58.                 return -1;! `- Y6 l9 Q/ ^, M( Q  t9 ~
  59.         }8 W' P& A5 i9 @! _+ v) V
  60.         arg.sub_addr_count      = 2;
    , ?" X5 D4 o$ B: Z8 h! l2 _* q+ p
  61.         arg.data_count          = 0x18;
    ! o9 V9 g3 K# c0 O' Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;* B, {/ }, R5 }6 f
  63.         arg.e2prom_cmd_data     = buf;% q/ @7 M& h0 ~% w; U8 U; j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 n2 W* k% q, U; x. ]: L, g1 I
  65.         if (ret != 0) {
    ; L3 q8 Y* `2 D/ Y! Z9 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " a4 x4 @/ X1 L; V5 I! A7 r% I
  67.                 return -1;% S4 n- f% {7 \7 U; I$ n+ z
  68.         }* }$ d9 E! c) G) b) ^* D
  69. - ^9 o- M  R$ l9 B" W3 S
  70.         return 0;- P  r- ^5 a( h; f7 L) L
  71. }
    - v& ^* r, [% x& L3 Y! p, W  i" D
  72. 0 K1 [" h1 W: f! F9 a
  73. int main()
    9 n) i6 n/ X  d8 s7 g8 l" J
  74. {; X/ M: o0 \' @  D
  75.         char c;
    % g6 R! k7 H+ ^
  76.         int i, macs[6];8 f* j+ a+ R$ }
  77.         unsigned char mac[6];# H6 p7 E9 n# s5 s3 ^
  78.         unsigned char stbid[256];) @9 f! r0 P1 z; z0 J6 M9 J
  79. ; E, n% C! ~$ T; a5 R9 I
  80.         if (readparam(mac, stbid) < 0)8 Z. W7 `% T- q" U" f  c% M  S
  81.                 return 1;
    # B7 v+ |6 b" \5 @2 E! s4 X' t

  82. 0 ?/ C' J3 V& A4 b; ?: h
  83.         printf("Current parameters: \n");
    + a" G/ ~1 I; y$ F. Z( J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 ~$ c# @8 c- g: U5 U) Y9 p
  85.         printf("  STBID: %s\n", stbid);
    " b$ [( V7 x3 s* h
  86.         $ V0 }% M( j; e8 Z9 j" i$ v. B* W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 k0 |) K6 v" x* X, T3 d" B2 C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * Y% F5 C! V( K; t( ]
  89.                 printf("Input MAC error\n");1 W* ^3 H# R: `8 W$ T! b0 w' B  n1 {
  90.                 return 1;
    & n" u! T' O1 s9 S
  91.         }
    % ]* q( \5 S4 h: ~% U; ]
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ e5 z; {/ I# N$ o$ o4 G% H2 x/ n) L
  93.         printf("\nPlease input new STBID: ");
    4 o2 _" `9 i: |1 v1 [6 I% ?
  94.         scanf("%s", stbid);
    . q9 p; }$ L. t7 p
  95.         if (strlen(stbid) != 18) {
    . G( }( V2 c% T3 Z( W5 P2 V$ V
  96.                 printf("Invalid stbid\n");, c0 r+ P, s! j: I; D; J
  97.                 return 1;$ f' A1 D2 u* Q) p, f$ G
  98.         }* ^' i# s% H& d4 I5 I, \% T, W1 |* k
  99.         printf("\nNew parameters: \n");5 K( O3 L- H9 |: q/ y) z3 Z% A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 k4 `. ]! U) h5 r
  101.         printf("  STBID: %s\n", stbid);
    " S) Y$ E& Z/ C7 d7 R! Q' d
  102.   E5 ?( n9 z4 A- w0 v. s4 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");% C( q; D8 d+ M& Y4 x* C* {5 E5 ?- r
  104.         for (;;) {
    - M; K$ ]: W2 h3 O
  105.                 c = getchar();) |$ @4 f6 i! Q& ?
  106.                 if (c == 'y' || c == 'Y')' |' S2 p/ M$ t$ [% y
  107.                         break;
    - u7 _4 I' L& c9 l
  108.                 if (c == 'n' || c == 'N') {
    % [' b1 R/ x4 v& X7 @
  109.                         printf("\nAborted.\n");
    & h) X% f$ K' Q. S4 [
  110.                         return 1;
    4 y6 P( |( y: V$ R0 T. {( s. ]
  111.                 }: v. r- z2 e4 M/ L( ^% b3 [3 T
  112.         }. Y) Z9 W; d3 n/ I+ O( W" z9 `- N
  113.         if (writeparam(mac, stbid) == 0) : |/ S% b; g1 b2 C$ c
  114.                 printf("Parameters changed.\n");2 l9 O5 G* d4 ^. D# i) p# q

  115. + R# s9 p3 w1 H- r$ ^  b: S
  116.         return 0;
    9 V' d: ?9 }* C3 K0 D
  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 - t/ m* n0 j/ |+ c
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 I$ o  d; l3 }
你用的编译命令行格式是什么?/ W( k$ E& h' K+ S0 I; L0 y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部