找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15848|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ o: }& G3 }( r* c3 U! g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( m! y: X4 j, ^1 }% a8 P1 e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ P8 ]2 F1 T% Iusage: himr <address> <value>. sample: himr 0x80040000 0x0
( r% F/ R8 W8 l2 V/ m5 Y
# y: n( D+ @8 |- o4 f# Y( k; ~+ V! `: h; F* E; a2 O- W- F: V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! C7 n$ o8 r  J% I

3 Q/ Y) D2 C8 @5 L! O6 k" N, U补充内容 (2012-3-8 09:42):0 t2 P! G- H: ?2 N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, [5 R; ?/ f3 @) d, c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- @( R  z- Q6 b0 P% h- c' v
! L) j1 D8 Y5 ~3 A3 l5 v
himr <address> <value>. sample: himr 0x80040000 0x01 }3 O2 t: I8 h+ I0 ]! g' i

8 [1 z, N9 Q& t( Q+ g例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
9 {1 O- J# D( mhimr 0x80040000 0x00
9 z5 T0 M$ R' a! U7 Xhimr 0x80040001 0x11% a: f7 B# W5 N. E5 H
himr 0x80040002 0x22, i! A# d, i5 D* V2 @( p* j$ V( O
himr 0x80040003 0x33* `" u& p, Z7 N7 `1 J) K
himr 0x80040004 0x44+ f4 c! p( l  d& m9 k
himr 0x80040005 0x55
- N7 V& O1 u" `2 e  ^5 S. F! m2 z  [4 d+ |8 }- F4 u
SN也是类似。" u2 h; K2 i8 Z$ [  m5 e3 d, n, s

* d! D( C3 a; W现在主要是,谁告诉我们MAC和SN的地址?. K2 r6 K3 n7 T
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) W1 n; V" B# k2 j5 v  J6 C一直想找到运程修改MAC和SN的办法,苦于无解啊

7 I( K! W, {- ~; l( T: z" O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" M3 ]6 [( {* A" j1 K; Z# \2 L# [+ e( i. ~, H
修改的代码早有了。到今天不会编译。
/ ]- J- ^5 p; N: e) e" R1 a3 ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 J2 B& W2 C. n8 _2 L9 X* k& i. [
  2. #include <malloc.h>8 b. \0 y/ y& ?" e/ g" r7 y
  3. #include <sys/types.h># m4 I  z2 M& ]2 J' k5 i
  4. #include <sys/stat.h>7 O8 k+ ^9 \# i2 l/ c& Y0 C8 C
  5. #include <sys/ioctl.h>
    / ], S. V% j7 t/ Z/ K$ _: r% {& a
  6. #include <stdio.h>
    + g4 Z. O  U% ^) ], s
  7. #include <string.h>
    ! B$ `) X5 C1 ^3 t$ p: Z
  8. 6 E# C' ~- i6 _/ K) ]
  9. typedef struct {
    & C1 s& `0 ?& l7 G1 Z
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! h2 p  M. i1 Z0 J3 F- @) I/ n' i
  11.         unsigned int        sub_addr_count;, q( X0 x: j: V1 x
  12.         unsigned char*        e2prom_cmd_data;6 u* S" Q4 q$ y. ]# o
  13.         unsigned int        data_count;
    2 P1 f7 V+ h; ]0 E8 I9 R
  14. } e2prom_s_cmd;
    9 c+ x# h) ~  V! m6 x
  15. 7 m$ i8 E! n: S; o; I' C
  16. #define E2PROM_CMD_READ 1
    $ a# L7 ]& o& I4 V
  17. #define E2PROM_CMD_WRITE 2
    9 A2 l6 o% {2 R- F) z* U4 h# |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 N8 S0 z$ t& A

  19. 2 b. [/ G) j+ u' T8 V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 O$ M$ S8 I5 c$ K; Q$ S2 n% ]
  21. {
    & ?3 D4 }+ Z- H) n7 Y; s5 w6 H- F: a# z
  22.         int fd, ret;
    ) O. Q; m% I4 ?; E/ @
  23.         e2prom_s_cmd arg;
    4 U3 r" B. A  e" ^6 `4 Z7 L
  24.         unsigned char buf[0x18];
    2 b0 z- Q! p6 [4 j2 [* s

  25. 0 R8 W8 S7 O3 m: D. s) M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 y0 Q- W6 e0 O5 k: ^7 ^9 f4 Z
  27.         if (fd  < 0) {
    ( Q1 G6 `: ~7 f' w' i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 C3 X- P( A. v& x! o
  29.                 return -1;
    ) Q. \; H7 w5 X: G' n* t' T% W
  30.         }
    & y# C; Z( Q; Y1 V) I
  31.         arg.sub_addr_count      = 2;' O+ \  T/ d4 k3 Z7 f* N
  32.         arg.data_count          = 0x18;
    2 I0 ]: {" M& C) \, D: V% U9 l+ D
  33.         arg.e2prom_cmd_sub_addr = 0x290;& F" r* `" N  X0 x9 a4 h+ F
  34.         arg.e2prom_cmd_data     = buf;
    ! m. u0 f& L$ s& X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 b, L* b' Z( C
  36.         if (ret != 0) {
    9 a0 {  Z) `* o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' y8 B/ F. r1 B4 D
  38.                 return -1;
    & J; A: ~% \" T8 K
  39.         }( Z- f3 h6 d! s9 k4 T$ X* x& b
  40.         memcpy(mac, buf, 6);8 E" u7 d8 h: U- i
  41.         memcpy(stbid, &buf[6], 18);
    ' t* d4 i) ?: J
  42.         stbid[18] = '\0';
    2 s9 _% ~; ], f' P5 H7 w: a

  43. 6 _: }5 V. z# N1 E3 D4 P
  44.         return 0;: M- C7 X9 f0 g
  45. }
    ( k8 s, w4 ]. E0 C7 I; c
  46. 6 k9 I0 C' W+ s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ a' k+ I/ G0 Q" M
  48. {0 Z2 N! f7 s" w4 O9 [
  49.         int fd, ret;
    ( o5 c0 ?4 {. q2 D& V! L) S* H
  50.         e2prom_s_cmd arg;
    ' y5 {& z0 M( n6 `
  51.         unsigned char buf[0x18];. I" S* p1 N# [( }7 m7 g
  52. 2 a4 P: f2 Z" X8 e7 e; h) Y
  53.         memcpy(buf, mac, 6);
    " J" q0 t" [' |2 m. j
  54.         memcpy(&buf[6], stbid, 18);+ b+ A# Y: B4 }  ~* D; V( P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  N6 C* ]5 n$ b: {& T9 X
  56.         if (fd  < 0) {
    ( a0 e" m; Q4 @: i! a- X' k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + }  b, h  L8 `9 C  A
  58.                 return -1;' q* g# |7 ~! ?8 Z8 ^% J' y
  59.         }2 b% |8 B4 u6 Q/ f3 U
  60.         arg.sub_addr_count      = 2;& M+ Z* s+ f& M
  61.         arg.data_count          = 0x18;! \! W3 c! X4 N
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 y( n2 |& E4 p" \, ?$ r  d0 s
  63.         arg.e2prom_cmd_data     = buf;
    ) k6 k/ z6 @8 @, J* Q: m* `: D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ ^$ Q6 o7 ?+ t7 N: I
  65.         if (ret != 0) {0 N; G  q8 V& C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . Q! x7 o( [" l& A- D: b0 N
  67.                 return -1;4 @! s  Q0 P; I  s' |' c: F- e
  68.         }
    5 T5 i9 f4 n) q* ^

  69. ' L! X$ P- V+ r1 }- X. R6 U
  70.         return 0;+ ?' J- O' F- n* O  W7 d# F
  71. }
    : a! H6 f7 v( ~4 ?
  72. 0 K2 Q5 t2 ?, ]& ]9 K
  73. int main()
    1 Y& z- Y5 X, T
  74. {- U# p8 C  ~4 {
  75.         char c;; b, Y5 x( L/ n' Z
  76.         int i, macs[6];' y$ I( W5 F; s# _) `- a
  77.         unsigned char mac[6];4 D/ O) {/ R9 E+ ~: V$ p3 `
  78.         unsigned char stbid[256];7 w, b9 ]& ?# E3 Q% V5 }5 e

  79. % `3 r: Y* l) y, {3 t3 @4 D
  80.         if (readparam(mac, stbid) < 0)
    5 D/ L7 t' b8 p9 Y- h
  81.                 return 1;% b9 l! M7 A% s: e
  82. 7 B: |# O4 @) H5 O, ^% _/ s
  83.         printf("Current parameters: \n");
    / F$ f8 P2 p) v* R1 {* ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      b5 v8 \' I+ ~& e
  85.         printf("  STBID: %s\n", stbid);6 R4 e1 \; h3 l" V( J
  86.         $ M6 J  G1 w8 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " P* E$ {, k$ I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {( r" a8 [9 v! N4 Z) G4 h
  89.                 printf("Input MAC error\n");* w: I( \  ]. L: [% V* y
  90.                 return 1;" k! Z/ e( o4 Z  b, L+ }: b
  91.         }
    6 U; `  L. q2 V6 c. ^; s! M( M+ x0 d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 ?/ z- G9 h; b, [
  93.         printf("\nPlease input new STBID: ");$ v: I7 Y& p, K! n
  94.         scanf("%s", stbid);
    3 U- q1 q* J  q0 h( Z
  95.         if (strlen(stbid) != 18) {
    , }8 t9 V3 ?: u) p# S! u7 O
  96.                 printf("Invalid stbid\n");- g" c9 v. }3 j1 }$ i* I0 e
  97.                 return 1;
    - G7 r7 U8 k6 Y
  98.         }
    , G5 o) X: W6 W8 s! `
  99.         printf("\nNew parameters: \n");8 q5 E3 r" I) x* n/ b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! T. d1 B$ q0 L) o: j+ F
  101.         printf("  STBID: %s\n", stbid);/ E( o# O7 Y9 }, b( I
  102. $ Q  D7 [2 N' V, p& z3 j& A7 A0 Z5 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 m4 _* S3 q# @
  104.         for (;;) {1 Y. |; n+ v( y* K
  105.                 c = getchar();* F" x' q7 B& ~! D+ j
  106.                 if (c == 'y' || c == 'Y')
    : o0 S( f& D( k3 y! S
  107.                         break;
    % s# ~4 [! L: r* N1 B( [4 r3 e- k* ?
  108.                 if (c == 'n' || c == 'N') {4 X* R$ f" V( D' \, m
  109.                         printf("\nAborted.\n");
    ; {" e- l( T4 o* q: _! s  e' G) y
  110.                         return 1;- U& \6 l! P6 o' n* \, h
  111.                 }
    3 c8 d+ S: M* W1 f
  112.         }
    % J5 o3 o, e. m9 W2 @
  113.         if (writeparam(mac, stbid) == 0)
    8 v0 X4 |& l1 n. y/ i1 `) N
  114.                 printf("Parameters changed.\n");% y4 k/ a5 _4 ^  W. J
  115. 5 e( }1 I! o( T9 ?# y
  116.         return 0;# b8 U- w5 ]/ @! O8 F- c
  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 - _" a$ e% [8 J7 C! J7 m+ [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; ]5 J) T" S& b; r0 S5 u* N
你用的编译命令行格式是什么?6 h% u- I* r. y+ S& T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-22 11:43 , Processed in 0.037032 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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